我有一个Web API OData项目,一切都很好。我现在尝试使用$format参数返回xml而不是JSON,而不是指定头请求,但它不起作用。我尝试过这些方法:
http://localhost:3845/api/Customer?$format=application/xml
http://localhost:3845/api/Customer?$format=xml
http://localhost:3845/api/Customer?$format=application/xml;odata.metadata=full
一切都没有成功。这篇文章说,这是可能的:https://blogs.msdn.microsoft.com/webdev/2014/03/13/getting-started-with-asp-net-web-api-2-2-for-odata-v4-0/
我已经更新了所有的NuGet包,但请求似乎总是被忽略,而是每次都得到JSON。
由于ATOM格式(XML)只是OData V4协议的技术委员会规范,而不是OASIS标准,因此从版本6.3.0开始,在ODataLib中禁用ATOM格式。
要求OData V4服务以XML进行响应的正确方法如下:
GET http://localhost:3845/api/Customer?$format=application/atom+xml
或者将报头CCD_ 1设置为CCD_。但由于上述原因,它不适用于Web API OData V4。
要支持$format=xml
和$format=json
,请添加以下配置:
config.Formatters.JsonFormatter.AddQueryStringMapping("$format", "json", "application/json");
config.Formatters.XmlFormatter.AddQueryStringMapping("$format", "xml", "application/xml");