REST介绍--来自wiki

来源:互联网 发布:日本矮黑人种 知乎 编辑:程序博客网 时间:2024/05/20 09:24
REST:表象化状态转变,Representational State Transfer,简称REST

宗旨:
REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表形。获得这些表形致使这些应用程序转变了其状态。随着不断获取资源的表形,客户端应用不断地在转变着其状态,所谓表形化的状态转变(Representational State Transfer)。

这一观点不是凭空臆造的,而是通过观察当前Web互联网的运作方式而抽象出来的。Roy Fielding 认为,
“     设计良好的网络应用表现为一系列的网页,这些网页可以看作的虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变。     ”

要点及标准:
需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。

    * 资源是由URI来指定。
    * 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
    * 通过操作资源的表形来操作资源。
    * 资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式

RESTful Web 服务

RESTful Web 服务(也称为 RESTful Web API)是一个使用HTTP并遵循REST原则的Web服务。它从以下三个方面资源进行定义:

    * URI,比如:http://example.com/resources/。
    * Web服务接受与返回的互联网媒体类型,比如:JSON,XML ,YAML 等。
    * Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。

该表列出了在实现RESTful Web 服务时HTTP请求方法的典型用途。
HTTP 请求方法在RESTful Web 服务中的典型应用[1] 资源     GET     PUT     POST     DELETE
一组资源的URI,比如http://example.com/resources/     列出 URI,以及该资源组中每个资源的详细信息(后者可选)。     使用给定的一组资源替换当前整组资源。     在本组资源中创建/追加一个新的资源。 该操作往往返回新资源的URL。     删除 整组资源。
单个资源的URI,比如http://example.com/resources/142     获取 指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML、JSON等)     替换/创建 指定的资源。并将其追加到相应的资源组中。     把指定的资源当做一个资源组,并在其下创建/追加一个新的元素,使其隶属于当前资源。     删除 指定的元素。

PUT 和 DELETE 方法是幂等方法。GET方法是安全方法 (不会对服务器端有修改,因此也是幂等的)。

不像基于SOAP的Web服务,RESTful Web服务并没有的“正式”标准[2]。 这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但在实现RESTful Web服务时可以使用其他各种标准(比如HTTP,URL,XML,PNG等)

REST的优点

    * 可以利用缓存Cache来提高响应速度
    * 通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
    * 浏览器即可作为客户端,简化软件需求
    * 相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
    * 不需要额外的资源发现机制
    * 在软件技术演进中的长期的兼容性更好



原创粉丝点击