《RESTful Web Services》第一章 使用统一接口
序言 HTTP是一种应用层协议。SOAP和一些Ajax Web框架都将HTTP作为一种传输信息的协议,难以充分利用HTTP层的基础设施。
1.2 如何保持交互的可见性
可见性是HTTP的一个核心特征。以下特征完全取决于保持请求和响应的可见性:缓存、乐观并发控制、内容协商、安全性和幂等性。
HTTP通过以下途径来实现可见性:
- HTTP的交互是无状态的
- HTTP使用一个统一接口,包括OPTIONS,GET,HEAD,POST,DELETE,TRACE方法
- HTTP使用一种与MIME类似的信封格式进行表述编码
1.2 何时需要权衡可见性
下面这些情况,可能需要为了其他好处放弃可见性:方便客户端、抽象、网络效率
1.3 如何维护应用程序状态
解决方案:将应用程序状态编码到URI里,并通过在表述中包含这些URI,让客户端使用这些URI与资源进行交互。如果状态过大,或出于安全或隐私考虑,不能在网络中传输,则可以在持久化存储中存储应用程序状态,并将其状态的引用编码在URI中。
1.4 如何在服务器端实现安全和幂等的方法
在HTTP协议中,安全方法是不会引起副作用的。客户端在向安全方法发送请求时,无须担心会引起意料之外的副作用。可以将安全方法实现为只读操作。安全性并不意味着服务器每次都必须返回同一结果。它只是表明客户端可以发起请求,并知道它不会改变资源的状态。
幂等性保证客户端重复发起某个请求的效果与一次请求的效果一致。
1.5 如何在客户端处理安全和幂等方法
1.6 何时使用GET方法
不要把GET方法用于不安全或非幂等操作,因为这样做可能会造成永久性的、意想不到的、不符合需要的资源改变。有这样的工具:在服务器上通过定期提交一个GET请求来执行健康检查。
1.7 何时使用POST方法
以下场合使用POST方法:创建新的资源;修改一个或多个资源;执行需要大数据输入的查询;其他HTTP方法看上去不合适时。
所有基于HTTP的工具会这样对待POST:不会缓存这一方法的响应;网络爬虫和类似的工具不会自动发起POST请求;不会自动重复提交POST请求