gpt4 book ai didi

asp.net-web-api - 设置默认 WebAPI 格式化程序

转载 作者:行者123 更新时间:2023-12-03 05:54:45 26 4
gpt4 key购买 nike

我们使用 WebAPI 来模拟遗留系统的处理。因此,我们希望默认响应格式化程序是 XmlFormatter,而不是 JsonFormatter。原因是某些现有的服务调用不提供 Accept: HTTP header 字段。

我可以通过从 Formatters 集合中删除 JsonFormatter 然后重新添加它来实现此目的,强制它位于链的末尾。

这将导致使用 XmlFormatter 的默认格式响应。虽然它有效,但感觉不正确,尽管我将 Json 移动到集合的后面,但不能保证 XmlFormatter 位于集合的前面。

想法/想法?

最佳答案

只需按正确的顺序添加格式化程序即可。如果 ASP.NET Web API 找到相同内容类型的两个格式化程序,它将选择第一个,因此按正确的顺序添加格式化程序非常重要。

//somewhere in Web Api config
config.Formatters.Clear();
config.Formatters.Add(new XmlMediaTypeFormatter());
config.Formatters.Add(new JsonMediaTypeFormatter());

因此默认值将是 XML,即第一个格式化程序,但如果请求要求的话,API 仍然支持 JSON(带有适当的 HTTP header )。

最后,另一种不同的方法是使用自定义 IContentNegotiator 。它将允许您为给定的请求选择最合适的 MediaTypeFormatter

//somewhere in Web Api config
config.Services.Replace(typeof(IContentNegotiator), new MyCustomContentNegotiator());

有一个示例 here .

关于asp.net-web-api - 设置默认 WebAPI 格式化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23730951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com