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

相关推荐
IT_陈寒1 天前
Redis性能提升50%的7个实战技巧,连官方文档都没讲全!
前端·人工智能·后端
Gogo8161 天前
clsService 全局变量(隐形背包)
后端
计算机毕设指导61 天前
基于微信小程序+django连锁火锅智慧餐饮管理系统【源码文末联系】
java·后端·python·mysql·微信小程序·小程序·django
小鸡脚来咯1 天前
RabbitMQ详解(从入门到实战)
开发语言·后端·ruby
古城小栈1 天前
Spring Boot 3.3 整合 AI 工具链:自动生成接口文档
人工智能·spring boot·后端
稀饭过霍1 天前
【.NET 10.0】使用FluentValidation
c#·mvc·.net
踏浪无痕1 天前
为什么 Spring Cloud Gateway 必须用 WebFlux?
后端·面试·架构
码匠君1 天前
Dante Cloud 升级 Spring Boot 4 经验分享
经验分享·spring boot·后端
秋邱1 天前
Java面向对象进阶:封装、继承、多态的实现逻辑与实战案例
java·开发语言·后端·spring cloud·ar·restful
架构精进之路1 天前
一文搞懂什么是 Vibe Coding?
人工智能·后端