例如:请求告知服务端请求数据类型为HTML, XHTML, or XML 请求:Accept: text/html,application/xhtml+xml,application/xml 响应: HTTP...:{ "Value": 42 } 4 内容协商 在HTTP中主要的内容协商机制包括如下的请求头: Accept:应答中可接受的多媒体类型,如"application/json," "application.../xml," Accept-Charset:可接受的字符,如UTF-8或ISO 8859-1。...序列化 如果Web API的控制器操作(Action)返回CLR类型,管道序列化返回值并将其写入HTTP响应消息体。...text/javascript, */*; q=0.01 响应为: HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Content-Length
在HTTP中内容协商的主要机制是以下请求报头: Accept:响应可接收的媒体类型,如“application/json”、“application/xml”,或者自定义媒体类型,如“application...Accept-Charset:可接收的字符集,如“UTF-8”或“ISO 8859-1”。 Accept-Encoding:可接收的内容编码,如“gzip”。...Serialization——序列化 如果Web API控制器返回一个CLR类型的响应,(请求处理)管线会对返回值进行序列化,并将其写入HTTP响应体。..., text/javascript, */*; q=0.01 服务器可能会发送以下响应: HTTP/1.1 200 OK Content-Type: application/json; charset=...如果仍无匹配,内容协商器便简单地捡取能够对类型进行序列化的第一个格式化器。 选择字符编码 在选择格式化器之后,内容协商器会选择最佳字符编码。
在重写的方法WriteToStreamAsync中,对于非JSONP调用(回调函数不存在),我们直接调用基类的同名方法对响应对象实施针对JSON的序列化,否则调用WriteToStream方法将对象序列化后的...Web API采用内容协商机制选择出与当前请求相匹配的MediaTypeFormatter后,会调用此方法来创建真正用于序列化响应结果的MediaTypeFormatter对象。...从项目名称可以看出,WebApi和MvcApp分别为ASP.NET Web API和MVC应用,后者是Web API的调用者。...我们在WebApi应用中定义了如下一个继承自ApiController的ContactsController类型,它具有的唯一Action方法GetAllContacts返回一组联系人列表。...三、针对JSONP的请求和响应 如下所示的针对JSONP的Ajax请求和响应内容。
在 ASP.NET Core WebAPI 中,我们可能会面临一个需求:如何判断当前请求属于哪种 API 类型?例如,某些应用可能需要根据请求的类型决定不同的处理流程或者策略。...Accept:客户端希望接受的响应格式(如 application/json, application/xml)。User-Agent:客户端应用程序的信息。...根据请求体的内容(如 JSON、XML、FormData 等),我们可以判断 API 类型。4....判断 API 类型的实现方法下面我们将根据不同的 API 类型,给出如何在 ASP.NET Core WebAPI 中判断请求类型的方法。...以下是一个综合示例,演示如何在 ASP.NET Core WebAPI 中根据请求类型执行不同的操作。
1.3 响应的json/xml内容转换为强类型模型 1.3.1 隐式转换为强类型模型 [HttpHost("http://www.mywebapi.com/")] public interface IMyWebApi...); } 当方法的返回数据是UserInfo类型的json或xml文本,且响应的Content-Type为application/json或application/xml值时,方法的原有返回类型ITask...UserInfo> GetUserByAccountAsync(string account); } 当方法的返回数据是UserInfo类型的json或xml文本,但响应的Content-Type可能不是期望的...application/json或application/xml值时,就需要显式声明JsonReturn或XmlReturn特性。...请求body为描述多个opration的数据json内容; 3.
不过可惜了,今天我们讲解的主题不是这几种技术,今天主要讲解的是ASP.NET WebAPI。 ...对于ASP.NET WebAPI的优势和特点,在这里就不讲了,需要用到的自然就会选择,也不需要我浪费篇幅去讲解这些,这篇博文主要讲解ASP.NET WebAPI中的HTTP消息的结构和处理消息的核心对象...,其主要的核心部分就是对于HTTP协议的处理,建立请求、获取响应消息和解析消息这三大步骤,返回的消息内容一般为json或者xml,获取响应消息后,主要是对消息内容的反序列化,获得消息的实体信息,进而在程序中进一步处理...以上主要讲解了HttpRequestMessage对象和HttpResponseMessage对象包含的主要内容,请求和响应消息都可以包含一个可选的消息正文,两中消息类型以及消息内容,都可以使用响应的标头...HttpResponseHeaders Content-Type 定义请求或响应有效载荷正文中,资源表示使用的媒体类型 HttpContentHeaders (2).HttpHeaders
它可以设置返回类型的数据格式,如Json、Xml、Form等,并可以设置返回类型的字符编码、内容类型等属性。...ContentType指示HTTP请求或响应中的内容类型。例如,ContentType可以是"application/json"或"application/xml"等。 CharSet则指示字符集。...例如,CharSet可以是"utf-8"或"gb2312"等。 这两个属性一起描述了HTTP请求或响应中的内容类型和字符集。...在WebApiClientCore中,可以通过在方法的特性上设置ContentType和CharSet属性来指示请求或响应的相应内容类型和字符集。...application/json; charset=utf-16 5.4 Accpet ContentType 在WebApiClientCore中,Accept ContentType用于指定客户端期望接收哪种类型的响应内容
在.NET的体系中的分布式技术主要有webservice,.net remoting,MSMQ,WCF等等,但是今天介绍的是Asp.Net WebApi,对于Asp.Net WebApi技术,估计很多人都不会陌生...对于ASP.NET Web API的简单demo、安全认证、异常处理、内容协商、寄宿方式、错误处理等等,在这里就不再过于介绍,如果有时间博主会单独讲解这些内容。...(3).在路由模板其他占位符变量,诸如{ID},被映射到动作的参数。 对于ASP.NET Web API的路由机制就讲解这么多,更多的内容大家可以自己去了解。...(2).将HTTP请求消息的各元素转换成控制器操作方法的参数,并将操作方法的返回值转换为有效的HTTP响应正文。...ASP.NET Web API框架支持从请求元素到操作方法参数的绑定。对于HTTP响应值转换成适当的HTTP响应消息正文。
ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务。...ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。 这是 MSDN 给出的官方定义!...实际开发中,我们可以轻松的使用 WebAPI 配合 Routing 路由和 EF 框架来轻松的实现一个 RESTful 的 API 并将其作为软件的后端。...添加模型 模型是表示应用程序中的数据的对象。 ASP.NET Web API 可以自动序列化到 JSON、 XML 或某种其他格式,然后写入 HTTP 响应消息的正文序列化的数据。...只要客户端可以读取的序列化格式,它可以反序列化对象。 大多数客户端可以分析 XML 或 JSON。 此外,客户端可以指示它想通过 HTTP 请求消息中设置 Accept 标头的格式。
工作原理如下: 浏览器发送请求,通过Accept-Encoding带上自己支持的内容编码格式列表 服务端从中挑选一个用来对正文进行编码,并通过Content-Encoding响应头指明响应编码格式。...浏览器拿到响应正文后,根据Content-Encoding进行解压缩。服务端若响应未压缩的正文,则不允许返回Content-Encoding。...Br:表示采用Brotli 算法的编码方式。 内容编码: 内容编码针对的只是传输正文。...Content-type Content-type是HTTP的实体首部,用于说明请求或者返回的消息主体是用何种方式编码(即资源的MIME类型)。在请求、响应header中均存在。...application/json 消息主体是序列化后的json字符串。 text/html 是一种用HTTP作为传输协议,XML作为编码方式的远程调用规范。
CorsMessageHandler的自由主要体现在如下两个方面:其一,为简单跨域请求的响应和继预检请求后的真实跨域资源请求的响应添加CORS报头;其二,对从浏览器发送的预检请求予以响应。...从项目名称可以看出,WebApi和MvcApp分别为ASP.NET Web API和MVC应用,后者是Web API的调用者。.../json; charset=utf-8 13: Expires: -1 14: Server: Microsoft-IIS/8.0 15: X-AspNet-Version: 4.0.30319...UTF-8?B?...Web API支持W3C的CORS规范》实现CORS的实例一样,ASP.NET Web API自身也是借助于应用在HttpController类型或者定义其中的Action方法的特性来定义CORS授权策略的
从项目名称可以看出,WebApi和MvcApp分别为ASP.NET Web API和MVC应用,后者是Web API的调用者。...由于具体返回的数据类型为JsonResult>,所以联系人 列表以JSON格式被序列化。...如果我们采用Fiddler来监测页面加载过程中发送的请求和接收到的响应,我们会发现针对Web API调用的Ajax请求被成功发送,并且以JSON格式表示的联系人列表会被成功接收,请求和响应的内容如下所示...在该方法中,我们利用JavaScriptSerializer对Contact列表对象进行序列化,并将得到的内容填充到回调函数中从而得到如上所示的内容。...方法最终返回具有此主体内容的HttpResponseMessage对象,响应主体内容的媒体类型被设置为“text/javascript”。
;charset=utf-8 title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3 首先,Content-Type 被指定为 application/x-www-form-urlencoded...例如 JQuery 和 QWrap 的 Ajax,Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」。...: 1 POST http://www.example.com HTTP/1.1 2 Content-Type: application/json;charset=utf-8 3 4 {"title...(2)请求正文是multipart/form-data 除了传统的application/x-www-form-urlencoded表单,我们另一个经常用到的是上传文件用的表单,这种表单的类型为multipart...,从请求的响应结果可以看到数据已上传到服务端中。注意:一定要注意headers的类型。
在WebAPI v1.0(和ASP.NET MVC4在一起的版本)很多的类和接口并不存在,同时对Task异步编程(ApiController默认提供异步执行方法)的支持还有一些欠缺(缺少不少方便的扩展方法...前者包括针对数组、集合、字典、简单和复杂类型的绑定器,后者其实就是一个序列化器,默认包括3中:Json.NET的json序列化器(用的最多);DataContractSerializer和XMLSerializer...用于序列化XML;最后一种解码表单URL,编码主体数据。...Tip:模型绑定常见问题,WebAPI的格式化器Formatter需要提供相应的contentType才会起作用,返回值通过dataType设置(默认为XML),一定不能忘记内容协商,需要注意内容协商,...这儿强烈提醒的是dataType表示返回值类型,contentType为请求体的类型,熊二你个二货,内容协商是必须的,不然别人哪知道怎么做!
*它们对许多事务性或复杂的方案来说很不错。然后还有更轻量级的RESTful web 服务或"Web API",它们使用 JSON,XML,展示了所有的好东西和HTTP 规范的稳定性。...— — 请求/响应标头,超媒体概念等。...JSON 和 JavaScript真的是动态的,不过通常它是件麻烦事来尝试将真的动态的 JSON 对象反序列化为强类型的.NET结构。...但如果对我来说不够动态的话,为什么我的方法的参数不能只采取一种"动态"。 C# 是静态类型,这是肯定的,但这并不意味着我不能静态化动态的东西。;) 再次注意Watch窗口。...以上内容来自:微小的开心功能第2部分-Visual Studio 2012 中的ASP.NET Web API MVC4 WebAPI(一) MVC4 WebAPI(二)——Web API工作方式 http
;charset=utf-8 title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3 首先,Content-Type 被指定为 application/x-www-form-urlencoded...例如 JQuery 和 QWrap 的 Ajax,Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」。...首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。...application/json application/json 这个 Content-Type 作为响应头大家肯定不陌生。...: BASHPOST http://www.example.com HTTP/1.1 Content-Type: application/json;charset=utf-8 {"title":"test
/json; charset=utf-8 Connection: Close {"ContactId":7,"Name":"New Person1"} 5、以XML格式发送数据 以xml方式发布,需要替换...“Request Headers”为以下内容 Content-Type: application/xmlAccept: application/xml 替换“Request Body”为以下内容 xml; charset=utf-8 Connection: Close xml version="1.0" encoding="utf-8"?...: 如何添加检索一个单一的资源 如何设置一个方法返回一个404 处理异常情况下的HTTP 响应。
对于ASP.NET Web API来说,它会优先利用请求报头“Accept”携带的媒体类型来确定响应内容采用的表现形式。...如下所示的是Chrome访问“http://localhost/webhost/api/contacts/001”发送请求的内容,它之所以会得到以XML表示的响应是因为“Accept”报头指定的媒体类型列表中只有...“application/xml”被ASP.NET Web API支持。...除此之外,我们还需要添加针对程序集“System.Net.Formatting.Http.dll”的引用,因为序列化请求和反序列化响应的相关类型定义在此程序集中。...该HttpResponseMessage对象的Content属性返回一个表示响应主体内容的HttpContent对象,我们调用其ReadAsAsync方法读取响应主体内容并将其反序列化成一个Contact
同上 同上 SourceHttpMessageConverter 数据与javax.xml.transform.Source的相互转换 application/xml和text/xml和application.../plain和application/json和application/xml 同read @since 4.1 StringHttpMessageConverter 数据与String类型的相互转换...后面会是重磅内容~ ---- HttpMessageConverter接口是Spring3.0之后新增的一个接口,它负责将请求信息转换为一个对象(类型为T),并将对象(类型为T)绑定到请求方法的参数中或输出为响应信息...浏览器原生表单默认的提交数据的方式(就是没有设置enctype属性),它默认是这个:Content-Type: application/x-www-form-urlencoded;charset=utf...// 类似这种形式就是我们自己指定了编码:application/json;charset=UTF-8 Charset charset = (contentType !
3)、Web API "奇葩"的参数传递,看着一招就够了。 4)、ASP.NET WebApi标准格式化统一输出响应报文数据 。...5)、ASP.NET WebApi标准格式化统一输出异常报文数据 。 6)、ASP.NET WebApi降龙十八掌之美化JSON时间类型T问题和CORS跨域访问 。...2.2、 WebApi输出格式有点"丑",选择XML和JSON哪一个格式? 王小二好不容易把404的问题解决了,却遇到了XML和JSON生成出来的有点“丑”的样子,简直就是四不像啊!...2.4、ASP.NET WebApi标准格式化统一输出响应报文数据 王小二总算咬牙坚持迈过了上面的那么多“坑”,顿时兴奋不已。...2.6、ASP.NET WebApi降龙十八掌之美化JSON时间类型T问题和CORS跨域访问 1)、解决json小写问题。 2)、解决json格式化缩进问题。