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

相关推荐
阿丰资源8 小时前
基于SpringBoot的在线视频教育平台的设计与实现(附源码+数据库+文档,一键运行)
数据库·spring boot·后端
IT_陈寒8 小时前
我竟然被JavaScript的隐式类型转换坑了三天!
前端·人工智能·后端
Reart8 小时前
从0解构tinyWeb项目--(Day:9)
后端·架构·github
小码哥_常8 小时前
Java后端定时任务“三剑客”大比拼,选对不选贵!
后端
oldking呐呐8 小时前
MySQL从入门到入土 -- 2.数据库基础
后端·mysql
用户860821135658 小时前
从JVM到Spring Boot:一文搞懂胖Jar中的类加载机制
后端
小兵张健8 小时前
30天减20斤挑战:少一斤发100红包(2)
后端·程序员·全栈
汤姆Tom8 小时前
从 0 到 1 开发项目?你是否也是这样开始?先有再优化一步一步带你了解架构设计
前端·后端·架构
muskk12 小时前
一个文件,9万星:Karpathy 用 4 条规则治好了 AI 写代码的"坏毛病"
前端·后端
xlecho12 小时前
从单一语言到全域全栈,AI凭全能实力,淘汰旧时代语言工程师
人工智能·后端·开源