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

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

在HTTP中内容协商的主要机制是以下请求报头: Accept:响应可接收的媒体类型,如“application/json”、“application/xml”,或者自定义媒体类型,如“application...Serialization——序列化 如果Web API控制器返回一个CLR类型的响应,(请求处理)管线会对返回值进行序列化,并将其写入HTTP响应体。...服务器以一个Product对象的JSON表示作出了响应。注意,响应中的Content-Type报头已被设置成“application/json”。...如果未找到匹配,内容协商器会尝试匹配请求体的媒体类型(有请求体时)。例如,如果请求含有JSON数据,内容协商器会找到JSON格式化器。...如果仍无匹配,内容协商器便简单地捡取能够对类型进行序列化的第一个格式化器。 选择字符编码  在选择格式化器之后,内容协商器会选择最佳字符编码。

82210

WCF RESTful服务的Google Protocol Buffers超媒体类型

Protocol Buffers 是在一个很理想的结构化数据的语言中立的序列化格式。你可以考虑一下XML或JSON,但更轻,更小的协议缓冲区。 这种格式的广应用于谷歌不同的系统之间交换数据。...幸运的是,新版本的WCF HTTP堆栈,使媒体类型的WCF编程模型的一等公民,大家可以Glenn Block’s 博客去了解更详细的内容。...人们经常认为媒体类型只是在服务端使用,但是它用来在客户端控制序列化和反序列化的要求,下图显示了一个HTTP 请求/响应和媒体类型格式化扮演的角色: ?...下面的代码是自定义的ProtoBufferFormatter,构造函数里指明了支持的媒体类型 application/x-protobuf。...; 即使目前来说Google Protocol Buffers没有XML/JSON那样普及,RESTful服务使用中ProtoBuf无疑是一个非常有效的超媒体类型。

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

    【计网】从零开始学习http协议 --- 通过http实现客户端交互

    http的应答与响应的结构很相似,是以下面的字符串构成: 状态行:储存应答基础信息,错误码,错误信息,HTTP版本 应答报头:储存必要的一些信息,正文的长度,服务器类型、设置Cookie… 空行:将正文分割出来...3 完成http服务 http请求和应答我们都已经写好了,接下来就应该通过HttpServer来进行处理: 根据字符串反序列化获取http请求 根据http请求中的path路径将正文的数据读取到字符串中...需要注意的一点是这里浏览器可以成功的识别我们的正文纯属运气好,因为资源是由很多种类的,我们没有明确我们的资源的类型,但是浏览器自动识别出来类型,后续我们会学习具体的报文属性!.../javascript JavaScript脚本 .json application/json JSON数据 .txt text/plain 纯文本文件 .xml text/xml 或 application...Method Not Allowed 请求方法不被允许 500 Internal Server Error 服务器内部错误 502 Bad Gateway 使用代理服务器时, 代理服务器无法从上游服务器获取有效响应

    11510

    【愚公系列】2022年04月 Python教学课程 77-DRF框架之异常

    PermissionDenied 在每种情况下,REST 框架都将返回具有适当状态代码和内容类型的响应。响应的正文将包含有关错误性质的任何其他详细信息。 大多数错误响应将在响应正文中包含一个键。...detail 例如,以下请求: DELETE http://api.example.com/foo/bar HTTP/1.1 Accept: application/json 可能会收到一个错误响应,指示该资源上不允许使用该方法...该函数必须采用一对参数,第一个是要处理的异常,第二个是包含任何额外上下文(如当前正在处理的视图)的字典。异常处理程序函数应返回对象,如果无法处理异常,则应返回。...例如,确保所有错误响应在响应正文中都包含 HTTP 状态代码,如下所示: HTTP/1.1 405 Method Not Allowed Content-Type: application/json Content-Length...它不会用于视图直接返回的任何响应,例如在序列化程序验证失败时由泛型视图返回的响应。HTTP_400_BAD_REQUEST

    1.1K40

    网络编程之HTTP协议结构

    http协议 请求报文和响应报文都是由以下4部分组成 1.请求行 2.请求头 3.空行 4.消息主体 下图为http请求的报文结构 ? 下图为http响应报文结构 ?...请求和响应消息都可以传送一个实体,常见的实体报头为: Content-Type:发送给接收者的实体正文的媒体类型 Content-Lenght:实体正文的长度 Content-Language:描述资源所用的自然语言...,没有设置则该选项则认为实体内容将提供给所有的语言阅读 Content-Encoding:实体报头被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type...,定义为Key=value格式 Content-Type=application/json,定义为序列化为的json字符串 Content-Type= multipart/form-data,定义为表单数据提交...使用该提交方法需要规定一个内容分割符用于分割请求体中的多个post的内容,如文件内容和文本内容自然需要分割开来,不然接收方就无法正常解析和还原这个文件了。

    61130

    针对.NET Core, Xamarin以及.NET的自动类型安全Rest库: Refit

    •如果正文内容类型是string, 其内容会直接用作正文内容。...•如果当前参数拥有特性[Body(BodySerializationMethod.UrlEncoded)], 其内容会被URL编码。•针对其他类型,当前指定的参数会被默认序列化成JSON。...Task CreateUser([Body(buffered: true)] User user); Json内容 JSON请求和响应可以使用Json.NET来序列化和反序列化,默认情况下,Refit会使用...默认情况下, Refit会使用JSON内容序列化器,如果想要使用XML内容序列化器,你需要将RefitSetting的ContentSerializer属性指定为XmlContentSerializer...( 正文会被序列化成application/x-www-form-urlencoded ), 我们可以将指定参数的正文特性指定为BodySerializationMethod.UrlEncoded。

    1.7K20

    HTTP中的Accept-Encoding、Content-Encoding、Transfer-Encoding、Content-Type

    工作原理如下: 浏览器发送请求,通过Accept-Encoding带上自己支持的内容编码格式列表 服务端从中挑选一个用来对正文进行编码,并通过Content-Encoding响应头指明响应编码格式。...浏览器拿到响应正文后,根据Content-Encoding进行解压缩。服务端若响应未压缩的正文,则不允许返回Content-Encoding。...Br:表示采用Brotli 算法的编码方式。 内容编码: 内容编码针对的只是传输正文。...Media-type常用类型: application/x-www-form-urlencoded form表单或者提交的数据按照key1=value1&key2=value2方式进行编码,key...application/json 消息主体是序列化后的json字符串。 text/html 是一种用HTTP作为传输协议,XML作为编码方式的远程调用规范。

    2.8K20

    python3+requests:post请求四种传送正文方式(详解)

    实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。...post请求四种传送正文方式:    (1)请求正文是application/x-www-form-urlencoded    (2)请求正文是multipart/form-data    (3)请求正文是...(2)请求正文是multipart/form-data    除了传统的application/x-www-form-urlencoded表单,我们另一个经常用到的是上传文件用的表单,这种表单的类型为multipart...”: null,  ……  }     ♦文本文件report.txt的内容只有一行:Hello world!...,从请求的响应结果可以看到数据已上传到服务端中。   注意:一定要注意headers的类型。

    2.1K00

    jsonify

    flask提供了jsonify函数供用户处理返回的序列化json数据,而python自带的json库中也有dumps方法可以序列化json对象,那么在flask的视图函数中return它们会有什么不同之处呢...二、分析 1.Content-Type有区别 jsonify的作用实际上就是将我们传入的json形式数据序列化成为json字符串,作为响应的body,并且设置响应的Content-Type为application...json’) 可以看出jsonify实际上也是使用了json.dumps来序列化json形式的数据,作为响应正文返回。...但想必从第一部分的实验结果我们已经看出来了,使用jsonify时响应的Content-Type字段值为application/json,而使用json.dumps时该字段值为text/html。...2.接受参数有区别 jsonify可以接受和python中的dict构造器同样的参数,如下图。 而json.dumps比jsonify可以多接受list类型和一些其他类型的参数。

    54220

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

    1 多媒体格式化器 多媒体类型又叫MIME类型,指示了数据的格式。在HTTP协议中多媒体类型描述了消息体的格式。一个多媒体类型包括两个字符串:类型和子类型。...:{ "Value": 42 } 4 内容协商 在HTTP中主要的内容协商机制包括如下的请求头: Accept:应答中可接受的多媒体类型,如"application/json," "application...序列化 如果Web API的控制器操作(Action)返回CLR类型,管道序列化返回值并将其写入HTTP响应消息体。...如果没有匹配,内容协商者试图匹配请求消息体的多媒体类型。 如果请求包含JSON格式的数据,内容协商者会查找JSON格式化器。...如果通过以上规则还是无法匹配,内容协商者会选择第一个可以序列化待处理类型的格式化器。

    2.5K60

    在flask中使用jsonify和json.dumps的区别

    flask提供了jsonify函数供用户处理返回的序列化json数据,而python自带的json库中也有dumps方法可以序列化json对象,那么在flask的视图函数中return它们会有什么不同之处呢...二、分析 1.Content-Type有区别 jsonify的作用实际上就是将我们传入的json形式数据序列化成为json字符串,作为响应的body,并且设置响应的Content-Type为application...2), mimetype='application/json') 可以看出jsonify实际上也是使用了json.dumps来序列化json形式的数据,作为响应正文返回。...但想必从第一部分的实验结果我们已经看出来了,使用jsonify时响应的Content-Type字段值为application/json,而使用json.dumps时该字段值为text/html。...2.接受参数有区别 jsonify可以接受和python中的dict构造器同样的参数,如下图。 而json.dumps比jsonify可以多接受list类型和一些其他类型的参数。

    62810

    Spring注解篇:@RestController详解

    以下是对这段代码的详细分析:@RestController**注解**:这个注解表明UserController类是一个控制器,并且它的所有方法的返回值都将被序列化为JSON(或其它配置的格式),直接作为...HTTP响应的正文返回。...返回值:listUsers方法的返回值是一个List类型的对象。根据Spring MVC的工作原理,这个返回值将被自动序列化为JSON格式,并作为HTTP响应的正文发送给客户端。...自动序列化:Spring MVC自动将返回的对象序列化为JSON,简化了数据传输的过程。缺点:类型限制:由于返回值被自动序列化为JSON,因此返回值类型受限于可序列化的类型。...验证响应:检查响应的内容类型是否为application/json,并且响应体包含预期的用户列表数据。通过这种方式,开发者可以验证RESTful服务的实现是否正确,并确保应用程序的行为符合预期。

    60621
    领券