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

相关推荐
我爱娃哈哈1 小时前
SpringBoot 实现 RSA+AES 自动接口解密
java·spring boot·后端
崎岖Qiu1 小时前
SpringBoot:基于注解 @PostConstruct 和 ApplicationRunner 进行初始化的区别
java·spring boot·后端·spring·javaee
沈雅馨1 小时前
SQL语言的云计算
开发语言·后端·golang
哪里不会点哪里.1 小时前
如何自定义一个 Spring Boot Starter?
java·spring boot·后端
不吃香菜学java1 小时前
springboot左脚踩右脚螺旋升天系列-入门程序
java·spring boot·后端
没有bug.的程序员2 小时前
Spring Boot 性能优化:启动时间从 5s 到 1s 的全链路实战指南
java·spring boot·后端·spring·性能优化·全链路·启动时间
Sweet锦2 小时前
无需JVM!GraalVM打造Windows平台零依赖Java应用
java·windows·后端·云原生·开源
csdn_aspnet2 小时前
Go语言常用算法深度解析:并发与性能的优雅实践
后端·golang·go
LOYURU2 小时前
Centos7.6安装Go
开发语言·后端·golang
颇有几分姿色2 小时前
Spring Boot Actuator未授权访问漏洞 【原理扫描】修复
java·spring boot·后端