1.2.5 HTTP方法

HTTP定义了一组请求方法,以表明要对指定资源执行的操作。每一个请求消息都必须包括一个HTTP方法,该方法将告诉服务器当前请求要执行哪一种操作。常见的HTTP方法有GET、POST、PUT、DELETE、PATCH、HEAD和OPTIONS等。

GET方法的作用是获取指定的资源,它并不会修改资源,因此GET方法是安全的。所谓安全方法,是指不会修改资源的方法。此外,GET方法也是幂等的。所谓幂等,是指多次对同一个URL调用同一个HTTP方法,其效果总是一样的。

POST方法的作用是创建资源。POST方法不是安全方法,因为它会修改服务器上的资源,并且也不是幂等方法,多次请求同一个POST操作会产生多个不同的资源。

PUT方法的作用是更新资源,因为PUT会修改资源,所以它也不是安全的方法。与POST方法不同的是,PUT方法是幂等的,多次更新同一个资源,其返回结果都是一样的。PUT方法除了更新资源外,当资源不存在时,它还可以创建资源。

需要注意的是,尽管POST与PUT方法都可以创建资源,但它们所请求的URI是有区别的,POST请求的URI是资源集合,而PUT则是请求单个不存在的资源,例如:

POST http://api.appdomain.com/users
PUT http://api.appdomain.com/users/1234

DELETE方法的作用是删除资源,它不是安全的,但它是幂等的,这意味着对同一资源请求多次DELETE方法,效果都是一样的。当第一次对资源调用DELETE方法时,返回表示操作成功的200 OK状态码,后续再调用DELETE方法,由于资源已经不存在,则应返回404 Not Found状态码。

PATCH方法的作用是对资源进行部分更新,它与PUT方法的区别是:PUT会更新指定资源的全部内容,而PATCH可以根据需要仅更新资源的部分字段或属性。

HEAD方法与GET方法相同,但它并不返回消息正文,在响应消息中仅包含响应状态码与消息头,该方法常用来检测资源是否存在以及获取资源的元数据。

OPTIONS方法用于获取资源支持的操作,服务器在返回的响应中会包含Allow消息头,它的值为HTTP方法列表,例如:

Allow: GET, POST

综上所述,常见的HTTP方法总结如表1-2所示。

表1-2 HTTP方法总结