ASP.NET Core实现http请求头部的内容协商 (json+xml)(如何根据请求的媒体类型调整数据的输出)
内容协商概念
内容协商Content Negotiation:允许客户端和服务器通过协商来决定 相互之间数据的 传输格式、语言等。
HTTP头部
http头部的媒体类型Media Types定义 accept
和 Content-type
-
HTTP请求头中的
accept
:客户端希望服务器返回的媒体格式 -
HTTP返回头中的
content-type
:对应请求时的accept,表示服务器返回数据的类型
后端/服务器端处理json/xml/其他的数据格式步骤
目前主流数据传输格式:json和xml
目的:
-
HTTP默认是传递
json
格式的数据,一旦在header请求中指定数据类型为application/xml
,我们需要返回对应的数据。 -
但是遇到无法识别的数据格式,需要后端返回错误代码
406
,表示unacceptable
我们只需要在 Startup.cs
的 ConfigureServices
方法中添加以下代码即可:
// services.AddControllers(); // 帮助我们在创建API的时候向IOC容器中添加一个控制器的框架服务
// 配置控制器 -> 处理mediatype
// false: 所有API都会忽略请求的头部,都统一回复默认的数据结构json
services.AddControllers(setupAction =>
{
setupAction.ReturnHttpNotAcceptable = true; // 处理其他格式
// 给api添加xml的处理(支持)AddXmlDataContractSerializerFormatters 配置所有与xml相关的input+output相关代码
// setupAction.OutputFormatters.Add(
// new XmlDataContractSerializerOutputFormatter());
}).AddXmlDataContractSerializerFormatters(); // 406 Not Acceptable // 处理xml格式
undefined
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2019-10-09 关于double的输入输出