RESTful Web API--web标准

原文地址:http://www.cnblogs.com/artech/p/restful-web-api-01.htmlhtml

REST不是一个标准,而是一种软件应用架构风格。web

若是说RPC是一种面向操做的架构风格,那么REST即是一种面向资源的架构风格。json

web

  咱们所熟悉的web(World Wide Web、WWW、W3或者万维网)实际上是一种利用HTTP协议获取和操做网络资源的方式。api

  咱们获取的资源包括:传统信息(文字图片),多媒体信息(音频视频)缓存

  Web的核心:HTTP、超文本(Hypertext)和超媒体(Hypermedia)安全

    超文本和超媒体规范了网络信息的表现形式,而HTTP则提供了网络访问的标准协议。服务器

HTTP

   TCP/IP与HTTP

  

 

    • TCP/IP是以IP和TCP协议为核心的一整套网络协议的总称,因此有时候咱们也称其为TCP/IP协议簇。   
    • TCP/IP协议簇划分为如上图所示的4个层次(应用层、传输层、网络层和链路层),构成整个协议簇的各个子协议处于相应层次中。   
    • IP协议是一个无链接(Connectionless)的网络协议,每次数据报的处理对它来讲均是独立的,所以IP协议也不能提供针对有序传输(数据接收的顺序与发送的顺序一致)的保证。
    • TCP是一个基于链接的协议,数据交换双方在进行报文传输以前须要创建链接,报文传输结束以后须要关闭链接。这是一个双工(Duplex)链接,数据交换的双工都可以利用它向对方发送数据。
    • TCP利用“接收确认”和“超时重传”机制确保了数据可以成功抵达目的地。
    • 每一个TCP报文段都具备一个16位的检验和(Checksum),因此接收方能够根据它确认数据在传输过程当中是否被篡改。
    • TCP还提供了“流量控制”功能避免了双方因缓存区大小不一致而致使报文丢失。
    • HTTP(Hypertext Transfer Protocol),全称为“超文本传输协议”,是TCP/IP协议簇的一部分。   
    • 因为TCP协议是一个“可靠”的协议,HTTP天然也能提供可靠数据传输功能。
    • IP协议利用IP地址来定位数据报发送的目的地,而利用域名系统(DNS)能够实现域名与IP地址之间的转换。
    • TCP协议利用端口号标识应用程序,因此某个应用程序在使用TCP协议进行通讯的时候必须指定目标应用的IP地址(或者域名)和端口号。
    • HTTP默认采用的端口号为80,而HTTPS(利用TLS/SSL为HTTP提供传输安全保障)的默认端口号则为443

   Web资源

     媒体类型

    • 不管是经过HTTP请求从Web服务器上获取资源,仍是利用请求向服务器提交资源,响应或者请求的主体(Body)除了包含承载资源自己的数据以外,其报头(Header)部分还应该包含表示数据形态的媒体类型。
    • 媒体类型又被称为MIME(Multipurpose Internet Mail Extension)类型,MIME是一个互联网标准,它扩展了电子邮件标准,使其可以支持非ASCII字符、二进制格式附件等多种格式的邮件消息。
    • text/html:HTML格式的文档。
    • text/xml(application/xml):XML格式的文本。
    • text/json(application/json): JSON格式的文本。
    • image/gif(image/jpeg、image/png):GIF(JPEG、PNG)格式的图片。
    • audio/mp4(audio/mpeg、audio/vnd.wave):MP4(MPEG、WAVE)格式的音频文件。
    • video/mp4(video/mpeg、video/quicktime):MP4(MPEG、QUICKTIME)格式的视频文件。        

     URI、URL和URN

    • 采用URI来标识Web资源已经成为了一种共识,实际上URI的全称为“统一资源标志符(Uniform Resource Identifier)”。
    • 一个URL确定是一个URI,可是一个URI并不必定是一个URL,URL仅仅是URI的一种表现形式而已。
    • URI是Web资源的标志符,因此只要求它具备“标识性”便可;
    • URL全称为“统一资源定位符(Uniform Resource Locator)”,因此除了标识性以外,它还具备定位的功能,用于描述Web资源所在的位置。
    • 一个完整的URL包含协议名称、主机名称(IP地址或者域名)、端口号、路径和查询字符串5个部分。      

   HTTP事务

    • HTTP是一种无状态的网络协议。
    • HTTP采用简单的“请求/响应”消息交换模式,一次HTTP事务(Transaction)始于请求的发送,止于响应的接收。
    • 针对客户端和Web服务器的屡次消息交换来讲,每一个HTTP事务均是相互独立的。  

    http方法

    • HTTP采用简单的请求/响应模式的消息交换旨在实现针对某个Web资源的某种操做。
    • 针对资源的操做类型,不外乎CRUD(Create、Retrieve、Update和Delete)  
    • 一个HTTP请求除了利用URI标志目标资源以外,还须要经过HTTP方法(HTTP Method或者HTTP Verb)指名针对资源的操做类型。
    • 经常使用的HTTP方法 包括GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECTION和PATCH等    

    响应状态码

    • 100~199:信息状态码,表明请求已被接受,须要继续处理。
    • 200~299:成功状态码,表明请求已成功被服务器接收、理解、并接受。
    • 300~399:重定向状态码,表明须要客户端采起进一步的操做才能完成请求。
    • 400~499:客户端错误状态码,表明了客户端看起来可能发生了错误,妨碍了服务器的处理。
    • 500~599:服务器错误状态码,表明了服务器在处理请求的过程当中有错误或者异常状态发生,也有多是服务器意识到以当前的软硬件资源没法完成对请求的处理。      

   HTTP报文

    • 客户端和Web服务器在一次HTTP事务中交换的消息被称为HTTP报头
    • 客户端发送给服务器的请求消息被称为请求报文
    • 服务器返回给客户端的响应消息被称为响应报头
    • 请求报文和响应报头采用纯文本编码,由一行行简单的字符串组成
    • 一个完整的HTTP报文包括:起始行,报头集合,主体内容
    • 起始行:表明HTTP报文的第一行文字,请求报文利用起始行表示采用的HTTP方法、请求URI和采用的HTTP版本,而响应报文的起始行在承载着HTTP版本和响应状态码等信息。
    • 报头集合:HTTP报文的起始行后面能够包含零个或者多个报头字段。每一个报头表现为一个键/值对,键和值分别表示报头名称和报头的值,二者经过冒号(“:”)进行分割。HTTP报文采用一个空行做为报头集合结束的标志。
    • 主体内容:表明报头集合结束标志的空行以后就是HTTP报文的主体部分了。
    • 客户端提交给服务器的数据通常置于请求报头的主体,而响应报头的主体也承载着服务器返回给客户端的数据。
    • 不管是请求报文仍是响应报文,其主体部分均是能够缺省的。      
相关文章
相关标签/搜索