首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET Web API编程——序列化与内容协商

:{ "Value": 42 } 4 内容协商 在HTTP中主要内容协商机制包括如下请求头: Accept:应答中可接受多媒体类型,如"application/json," "application...其次,内容协商者会查看每个格式化器,并评估其与HTTP请求匹配程度。为了评估匹配程度,内容协商会做两件事。...集合SupportedMediaTypes包含了被支持多媒体类型,内容协商者依据请求头Accept标头来匹配这个集合。...如果没有匹配,内容协商者试图匹配请求消息体多媒体类型。 如果请求包含JSON格式数据,内容协商者会查找JSON格式化器。...如果通过以上规则还是无法匹配,内容协商者会选择第一个可以序列化待处理类型格式化器。

2.4K60

Asp.Net Web API 2第十四课——Content Negotiation(内容协商)

API如何实现内容协商。...HTTP规范(RFC 2616)将内容协商定义为“在有多个表现可用时,为一个给定响应选择最佳表现过程”。...为了评估匹配情况,内容协商器要对此格式化器考察两样东西: SupportedMediaTypes集合,它含有一个可支持媒体类型列表。内容协商器尝试根据请求Accept报头对这个列表进行匹配。...如果未找到匹配,内容协商器会尝试匹配请求体媒体类型(有请求体时)。例如,如果请求含有JSON数据,内容协商器会找到JSON格式化器。...如果仍无匹配,内容协商器便简单地捡取能够对类型进行序列化第一个格式化器。 选择字符编码  在选择格式化器之后,内容协商器会选择最佳字符编码。

78510
您找到你想要的搜索结果了吗?
是的
没有找到

SpringBoot中内容协商,颠覆你认知

本文将介绍 SpringMVC 中内容协商,可能有朋友听过,没听过估计觉得很陌生,不管怎么样,先告诉你一点,这篇是非常重要一个知识点,一定不要错误,坚持看完,一定会有大量收获,末尾有 pdf 版本,...3.1、这是由类容协商决定 3.2、带来了 2 个问题 4、客户端如何告诉服务器端自己能够接受内容类型?...3.1、这是由类容协商决定 服务器端和请求端协商决定最终返回什么格式内容。...如下代码,这段代码就由 SpringMVC 内部结合请求头中 Accpet 协商得到最终返回媒体类型。...方式 3 中会涉及到内容协商,过程大致如下 step1:获取客户端能够接收媒体类型列表:由请求头 Accpet 解析得到 step2:获取服务器端能够响应媒体类型列表:遍历所有 HttpMessageConverter

1.1K41

ContentNegotiation内容协商机制(一)---Spring MVC内置支持4种内容协商方式【享学Spring MVC】

RESTful服务中很重要一个特性是:同一资源可以有多种表述,这就是我们今天文章主题:内容协商(ContentNegotiation)。...HTTP内容协商 虽然本文主要是想说Spring MVC中内容协商机制,但是在此之前是很有必要先了解HTTP内容协商是怎么回事(Spring MVC实现了它并且扩展了它更为强大~)。...关于更多Http中Content-Type内容,我推荐参见此文章:Http请求中Content-Type ---- Spring MVC内容协商 Spring MVC实现了HTTP内容协商同时,...这就是Spring Boot默认对异常处理方式:它使用就是基于 固定类型(produces)实现内容协商。...~ 总结 内容协商在RESTful流行今天还是非常重要一块内容,它对于提升用户体验,提升效率和降低维护成本都有不可忽视作用,注意它三优先级为:后缀 > 请求参数 > HTTP首部Accept 一般情况下

1.9K20

ASP.NET Core 2.2 : 二十一. 内容协商与自定义IActionResult和格式化类

上一章结尾留下了一个问题:同样是ObjectResult,在执行时候又是如何被转换成string和JSON两种格式呢? 本章来解答这个问题,这里涉及到一个名词:“内容协商”。...(ASP.NET Core 系列目录) 一、内容协商 依然以返回Book类型Action为例,看看它是怎么被转换为JSON类型。...所以请求最终返回结果数据格式是由二者“协商”决定。...总结一下这个规则: 只有在Action返回类型为ObjectResult时候才会进行“协商”。...这也验证了第二节关于服务端和客户端“协商规则。 四、添加XML类型支持 第三、四节通过自定义方式实现了特殊格式处理,在项目中常见格式还有XML,这在ASP.NET Core中没有做默认支持。

1.4K20

ContentNegotiation内容协商机制(三)---在视图View上应用:ContentNegotiatingViewResolver深度解析【享学Spring MVC】

因为内容协商不仅仅可以使用在HttpMessage上,还可以使用在View视图上,这也就是本文想重点补充内容内容协商在HttpMessage上应用 前两篇文章示例都是基于此。...里也使用到了,因此我自然而然联想到了内容协商也能结合视图解析器一起使用~ 内容协商在视图View上应用 由于前面我给示例都是基于Http消息,没有视图可言。...ContentNegotiationManager来处理内容协商。...return candidateViews; } } 关于ContentNegotiatingViewResolver我总结出如下细节要点: ContentNegotiationManager用于内容协商策略可以手动...我们已经知道,默认情况下Spring MVC可没有使用此内容协商视图解析器,因此若有同一资源,多视图展示需求,我们是需要手动配置(开启)支持

1K10

SGMII接口前导码小于7个字节55情况

,不过内容偏向于底层编码原因,具体不太了解,手册只是简单说明了一下表面原因,手册221页说明此问题),同时有的数据帧gmii_rx_dv信号拉低后gmii_rx_er信号会拉高一个时钟(对应gmii_rxd...an_restart_config设置为0(该信号上升沿代表自协商参数an_adv_config_vector有效,an_restart_config为0表示使用默认参数,如果想手动配置自协商参数,可以查阅手册...而实验室所用MAC为GMII接口形式MAC,因此实际上我们应用场景变成了如下两图: ?...此处IDDR/ODDR原语、SGMII主要功能是为实验室MAC提供标准千兆GMII接口形式数据源。...如果PHY芯片工作模式是偏移了2ns,那我们就不用作偏移了,否则可能正好导致时钟边沿和数据跳边沿对齐,出现错误;如果PHY芯片工作模式是不偏移,则我们需要手动控制时钟偏移。

1.5K20

内容协商 (Content Negotiation)

所以,HTTP提供了一些“内容协商”机制 — 当有多个可得表现形式时候,对特定响应选择最好表现形式处理过程。...任何包含一个实体主体响应包括错误响应都可能会受协商支配。 有两种类型内容协商在HTTP中:服务器驱动协商和代理驱动协商。这两种类型协商具有正交性并且能被单独使用或联合使用。...此规范没有定义透明协商机制,所以,它不能防止任何这样机制被用于HTTP/1.1。 ASP.NET Web API支持内容协商: 客户端和服务器可以一起从API返回数据,以确定正确格式....ASP.NET Web API内容协商具体请看:http://www.asp.net/web-api/overview/formats-and-model-binding/content-negotiation...Different MediaTypeFormatters for same MediaHeaderValue in ASP.NET Web API ASP.NET Web API: Query string

1K90

SGMII接口调试

SGMII接口(开启自协商)调试分为三个步骤,先测试SGMII最基本功能仿真、再测试SGMII最基本功能自回环上板、最后直接测试开启自协商功能后上板。...1、测试SGMII基本功能仿真: (1) 打开sgmii IP,将接口选择为sgmii接口,关闭MDIO接口,其它选项默认,生成IP; (2) 根据IP生成example design,将speed_is...产生这个具体原因不详(手册有介绍,不过内容偏向于底层编码原因,具体不太了解,手册只是简单说明了一下表面原因,手册221页说明此问题),同时有的数据帧gmii_rx_dv信号拉低后gmii_rx_er信号会拉高一个时钟...图2 注意:SGMII开启自协商后要仿真非常长时间才能互通(8.1ms),因此推荐直接上板 2、测试SGMII基本功能上板: (1)SGMII接口independent_clock默认是200MHZ...an_restart_config设置为0(该信号上升沿代表自协商参数an_adv_config_vector有效,an_restart_config为0表示使用默认参数,如果想手动配置自协商参数,可以查阅手册

3.2K20

入门:构建简单Web API

4、通过asp.net routing注册ContractsApi Api需要通过asp.net mvc宿主,使用ASP.net RouteMapServiceRoute扩展方法把它注册进去。...7、查询返回Json格式Contracts。HTTP提供了一些“内容协商”机制 — 当有多个可得表现形式时候,对特定响应选择最好表现形式处理过程。...服务器驱动协商(Server-driven Negotiation) 如果响应最好表现形式选择是通过服务器上算法来实现,那么这种方式协商称做服务器驱动协商。...选择是基于响应可得表现形式(根据不同维度,响应会不同;例如,语言,内容编码,等等)和请求消息里特定头域或关于请求其他信息(如:网络客户端地址)。...总结 通过这个Quick start,我们学习到了以下内容 如何使用NuGet向项目中添加Web Api引用 如何创建一个通过HTTP GET访问Web Api 如何通过asp.net routes

3.1K90

ASP.NET Core解析Protobuf格式数据

ASP.NET Core通过IInputFormatter来解析输入数据,并进行模型绑定(Model Binding);通过IOutputFormatter来解析输出数据,来格式化响应(format...ASP.NET Core解析Protocol Buffers ASP.NET Core默认只支持对application/json解析,要解析protobuf格式数据,需要引入nuget包:AspCoreProtobufFormatters...此外,通过Grpc.Tools生成C#类型中,集合类型属性是只读,导致ASP.NET Core中默认json formatter在进行模型绑定时,无法给集合类行属性赋值。...如果想要返回json格式数据,可以根据内容协商机制在Accept头字段中指定application/json。...对于不支持内容协商场景,可以通过自定义一个过滤器来实现: [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple

1.1K10

使用Python手动搭建一个网站服务器,在浏览器中显示你想要展现内容

那么在面试后端开发工程师时候,面试官可能就会问到网站开发底层原理是什么?...我们不止仅仅会使用框架开发,还需要知其所以然 今天领大家不借助任何框架基础上手动搭建一个资料查找网站 主要内容 TCP网络模型 正则表达式匹配资源 如何编写一个tcp server服务端 开始我们代码...可以使用Python自带一个通讯模型:socket python中内置网络模型库tcp / udp import socket 为浏览器发送数据函数 1....向浏览器发送http数据 如果浏览器在接收完http协议数据之后遇到了换行,自动将下面的数据转成网站内容body中去 response = 'HTTP/1.1 200 OK \r\n' response...+= '\r\n' # 构建你想要显示数据内容 response += 'hello world' 3.

1.9K30
领券