一般情況下,restfult api 進行數據返回或模型綁定,預設json格式會比較常見和方便,當然偶爾也會需要以XML格式的要求 對於返回XML,普通常見的方式就是在每個aciton方法進行諸如XmlFormatter此類的序列化處理, 而對於接收XML,則是進行一些額外的XML解析操作或反序列化 ...
一般情況下,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; }
結果如下: