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

相关推荐
凤山老林17 小时前
SpringBoot 使用 H2 文本数据库构建轻量级应用
java·数据库·spring boot·后端
清汤饺子17 小时前
用 Cursor 半年了,效率还是没提升?是因为你没用对这 7 个功能
前端·后端·cursor
雨夜之寂18 小时前
Browser Use + DeepSeek,我踩了哪些坑
后端·面试
wefly201718 小时前
开发者效率神器!jsontop.cn一站式工具集,覆盖开发全流程高频需求
前端·后端·python·django·flask·前端开发工具·后端开发工具
dreamread18 小时前
【SpringBoot整合系列】SpringBoot3.x整合Swagger
java·spring boot·后端
把你毕设抢过来18 小时前
基于Spring Boot的社区智慧养老监护管理平台(源码+文档)
数据库·spring boot·后端
一直都在57218 小时前
Spring面经
java·后端·spring
XPoet19 小时前
AI 编程工程化:Command——给你的 AI 员工编一套操作手册
前端·后端·ai编程
jgyzl19 小时前
2026.3.12 常见的缓存读写策略
java·后端·spring
双叶83619 小时前
(Python)Python爬虫入门教程:从零开始学习网页抓取(爬虫教学)(Python教学)
后端·爬虫·python·学习