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 头。都不会发生内容协商。

相关推荐
程序员阿明3 小时前
spring boot4+springAI 2加redis多轮对话存储
spring boot·redis·后端
Mr.敦的私房菜3 小时前
【SpringBoot请求记录】Spring Boot Actuator 自定义记录 HTTP 服务请求
spring boot·mvc·运维开发
MetaLite3 小时前
SpringBoot整合FastJson2数据脱敏-接口日志与失败降级
java·spring boot·后端
xixingzhe23 小时前
SpringBoot 接口缓存实现
spring boot·后端·缓存
名字还没想好☜3 小时前
Go 时间格式化为什么用 2006-01-02:time.Format/Parse 的参考时间、时区与解析踩坑
开发语言·后端·golang·go
jyOverQ6 小时前
RabbitMQ 消息积压怎么办?Prefetch、消费者并发与扩容
分布式·后端·rabbitmq
东风破_14 小时前
从跨域到 WebSocket:前端跨域方案、SSE 与双向实时通信详解
前端·后端
行百里er15 小时前
Gateway 上别硬塞 MVC:DeferredImportSelector 看菜下锅
spring boot·后端·开源
名字还没想好☜15 小时前
Java 遍历时删元素抛 ConcurrentModificationException:fail-fast 原理与三种正确删法
后端
IT_陈寒16 小时前
React Hooks闭包陷阱差点让我加班到凌晨
前端·人工智能·后端