欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RESTful Web API中的Http协议语义

程序员文章站 2022-06-07 10:38:03
...

术语

在讲Http协议语义之前,我们先讲两个术语:资源资源表述

资源(Resource)

在REST的世界中,每种事物,比如一个产品、一个用户或是一个网页都被视为资源(Resource)。

资源表述(Representation of the resource

当浏览器为一个资源发送了HTTP请求后,服务器会发送一个文档作为回应,通常会是一个HTML文档,又或是图片、视频等。不论服务器返回了什么文档,我们都将这个文档称为资源表述(representation of the resource)。

Http语义协义

Http定义了8种不同的类型消息,在RESTful中常用到的有以下几种:

POST

基于给定的表述信息,在当前资源的下一级创建新的资源。

服务器对POST请求最常见的响应码是201(created),告之客户端资源创建成功;或是202(accepted),这表示服务打算按照提供的表述信息来创建一个资源,但是现在还没有真正的创建完成。

DELETE

销毁一个资源。

当客户端想要删除一个资源时,可以发送一个DELETE请求。服务器返回的响应码是204(no content),表示删除成功。如果试图GET一个不存在的资源,服务器会返回错误的响应码404(not found)。

DELETE请求有一个重要的属性:它是幂等的。所谓幂等,就是发送多次请求对资源状态的影响和发送一次请的影响是一样的

幂等性是一个很有用的特性,因为互联网不是一个可靠的网络,假设我们发送了一个DELETE请求,然后连接超时了,我们没有收到响应信息,所以我们无法得知资源是否被正确地删除了,但是我们可以利用DELETE请求的幂等性特性,再次发送DELETE请求并不断重试直到收到服务器响应为止。因为多次执行DELETE请求并不比只执行一次DELETE请求造成多的影响。

PUT

用给定的表述信息替换资源的当前状态。

客户端一般通过GET请求获取资源表述,然后对其进行修改,最后将修改后的表述作为PUT请求的负载数据发送回服务器,修改完成后,服务器返回200或是204响应码。

PUT请求也是幂等的。

GET

获取资源的某个表述(一个资源可以有多个表述)。

客户端通过发送GET请求来获取某个URL所标识的资源表述。服务器以application/vnd.collection+json格式返回资源表述。GET请法语最常见的响应码是200(OK)。

GET被定义为安全的HTTP方法,这是因为向服务器发送一条或是多条GET请求对资源的影响和没有发GET请求一样,不会对既有资源有作何影响。安全方法都是幂等的

 

以上四个协议对应着数据库中的增(Insert)删(delete)改(update)查(select)操作。

下面两个方法是客户端在分析研究API的时候经常使用到的

HEAD

获取服务器发送过来的头信息(不含资源表述信息)。

HEAD请求和GET请求一样,是安全方法,对HEAD请求最简单的理解就是轻量级别的GET请求,因为服务器只返回头信息,不需要返回资源表述信息。

用HEAD请求来代替GET请求,不会节约作何时间,但可以节省带宽的使用。

OPTIONS

获取这个资源所能响应的HTTP方法列表。

OPTIONS请求是HTTP的原生探索机制。一个OPTIONS请求的返回结果包含这个资源所支持的所有HTTP方法,如GET/PUT/DELETE/POST等。