Web API 2 OData=$format不起作用:请求总是被忽略



我有一个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");

最新更新