一般情况下,restfult api 进行数据返回或模型绑定,默认json格式会比较常见和方便,当然偶尔也会需要以XML格式的要求
对于返回XML,普通常见的方式就是在每个aciton方法进行诸如XmlFormatter此类的序列化处理,
而对于接收XML,则是进行一些额外的XML解析操作或反序列化处理。
下面记录和学习较为便捷的WebAPI的XML请求和响应处理使用,不喜勿喷,有错请指教。
.net core 版本:2.2
添加XML格式支持
1、安装 Microsoft.AspNetCore.Mvc.Formatters.Xml NuGet 包
2、再Startup.ConfigureServices 中调用 AddXmlSerializerFormatters 来配置对 System.Xml.Serialization.XmlSerializer的 实现。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2).AddXmlSerializerFormatters();
}
响应XML数据
想再Action层面、Controller层面或全局范围内指定特定操作响应XML格式,只需添加 [Produces] 过滤器,会自行处理成xml格式响应,无需再进行其他繁杂的处理步骤
如下指定Action方法响应XML格式:
[HttpGet("getstudent/{id}")]
[Produces("application/xml")]
public Student GetStudent(int id)
{
var obj = new Student
{
Age = 12,
Name = "123123"
};
return obj;
}
将直接返回如下:
XML请求
XML格式数据请求则使用[Consumes],若没有该属性,则直接识别请求头中的Content-Type,也就是[Consumes]可以省略,只要Content-Type为xml,就能进行xml数据的模型绑定
如下代码:
下面示例以XML格式请求,程序会自动解析并绑定Student模型类,返回此对象的json格式(webapi 默认返回的格式)
[HttpPost("poststudent")] [Consumes("application/xml")] public Student PostStudent(Student obj) { return obj; }
结果如下: