asp.net Core MVC 内容协商

内容协商

内容协商是Asp.Net Core 控制器的一项功能,而Asp.Net MVC5 控制器并不支持它。

引入内容协商是为了满足 Web API 框架的需要。 在 Asp.net Core 中,内容协商 被内置到引擎中,供开发人员使用。

顾名思义,内容协商指的是调用方和API之间悄悄发生的协商。 协商会考虑返回数据的实际格式。

如果传入的请求包含一个Accept头,说明了调用方可以理解的MIME,那么就要考虑内容协商。

Asp.net Core 中的默认行为是将任何返回对象序列化为Json。

csharp 复制代码
[HttpGet]
public ObjectResult Get(Guid id)
{
	var n=fun(xx);
	return Ok(n);
}

如果控制器检测到Accept头,那么就会扫描头内容中列出的类型,直到找到自己可以提供的格式。这种扫描遵循的是 MIME 类型出现的顺序。如果没有找到控制器能够支持的类型,就使用Json格式

注意》》》

如果传入的请求包含 Accept头,并且控制器返回的响应是 ObjectResult类型,则会触发内容协商。

如果序列化控制器的响应(例如使用了Json方法)那么不管是不是发送了 Accept 头。都不会发生内容协商。

相关推荐
鶴哥只手遮天9 分钟前
Spring Framework 7.0.9 深度剖析-03-IoC 容器核心:BeanFactory 与 BeanDefinition 体系
java·后端·开源
tianbin91112 分钟前
大模型流式输出异常排查,API 中转站层面的问题定位思路
后端·云计算
鶴哥只手遮天26 分钟前
Spring Framework 7.0.9 深度剖析-01-整体架构与设计哲学
java·后端·开源
GetcharZp1 小时前
不止是企业知识库:腾讯开源 WeKnora,让文档变成可问答、可执行的知识系统
后端
她的男孩1 小时前
Spring Boot 4 升级别只看编译绿:Forge Admin 在 Jackson、Tomcat JSON 限流、MP 包名与 Flowable 库上踩过的坑
java·spring boot·后端
Song_RsHt1 小时前
Gateway (上):路由与转发,微服务的统一入口
java·笔记·后端·学习·gateway
技术卷2 小时前
DeepSeek 部分 API 中断事件:重要细节与事实
人工智能·后端·网络安全
昔我往昔2 小时前
LangChain_RAG_学习小结
后端·python
流烟默2 小时前
Spring Boot 异常响应被序列化为 XML 的排查与修复
xml·spring boot·后端
geovindu3 小时前
rust: Iterator Pattern
开发语言·后端·设计模式·rust·行为模式·迭代器模