配置WepApi默认支持JSON数据格式的返回
我们在使用MVC 的WepApi时,比如我们有如下方法:
// GET api/Task/5 public Task GetTask(int id) { Task task = db.Task.Find(id); if (task == null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound)); } return task; }
看,此方法返回的是Task实体类型.然后我们在浏览器里直接调用它.如:
http://localhost:8888/api/Task/GetTask/1
它返回的数据,在IE和Chrome是不一样的,IE默认直接返回JSON, 而Chrome返回的是XML.
这是什么道理呢?正常情况下,既然使用了WepApi,我们多数情况要求返回JSON, 这在IE里是正确的,而用Chrome的话就会出错.不是我们想要的.
原因是非IE在请求是带有application/xml而IE不带.
作为WebApi提供者,同一调用,在不同浏览器返回结果不一致,这是不是应该是框架提供者应该考虑的事情呢?这种把WebApi和IE绑定的小花招挺搞笑的.
那么怎么解决这个问题呢?
我们直接把XML的解析移除,不要它了.
在WebApiConfig.cs里增加如下代码:
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml"); config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
大功告成,各大浏览器对WepApi支持一致了,都返回Json
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述