Rest API 开发 学习笔记 概述
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浏览器。当然也可以是任何其他的格式。
REST的要求
客户端和服务器结构
连接协议具有无状态性
能够利用Cache机制增进性能
层次化的系统
随需代码 - Javascript (可选)
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 服务中的典型应用
资源
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服务并没有的“正式”标准。 这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但在实现RESTful Web服务时可以使用其他各种标准(比如HTTP,URL,XML,PNG等)。
REST的优点
可以利用缓存Cache来提高
响应速度通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
浏览器即可作为客户端,简化软件需求
相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
不需要额外的资源发现机制
在软件技术演进中的长期的兼容性更好