跳到主要内容位置

2分钟了解 HTTP Verbs

HTTP Verbs 是用于 HTTP 请求方式中的一系列的值,有:

  • GET
  • POST
  • PUT
  • DELETE
  • PATCH
  • HEAD
  • OPTIONS
  • CONNECT
  • TRACE

等 9 种。

了解各个 verb 的含义之前,先了解一下 Restful API。在 RESTFUL 风格的 URI 中,所有的请求都视为访问某一特定的资源,然而资源都是使用名词,如果要对资源进行增删改查,无法直接使用 RESTFul API 风格进行区分,这个时候就可以利用 HTTP Verbs 来表示对资源的操作。要注意,HTTP verbs 并不是专门用于 RESTFul API 的,只是随着 RESTFul API 的流行,这些 Verbs 有了用武之地。

在 Restful API 中,最常用的 HTTP verbs 是 GET、POST、PUT、PATCH 和 DELETE 这 5 种。假设我们有一个/api/user 资源,那么:

  • GET 就是获取所有 user,或者根据 id 获取单个 user。
  • POST 就是创建一个新的 user 实例。
  • PUT 则是替换某个特定的 user 实例。
  • PATCH 是修改某个特定 user 实例中的属性。
  • DELETE 用于删除某个特定的 user 实例。
GET /api/user -> [user1, user2, user3] 
GET /api/user/1 -> user1

POST /api/user
body { username: "zhangsan", age: 22, password: "******" } -> {id: 1, username:
"zhangsan", age: 22}

PUT /api/user/1 body { username: "lisi", age: 25} -> {id:1,
username: "lisi", age: 25 }

PATCH /api/user/1 body { username: "wangwu" } ->
{id:1, username: "wangwu"}

DELETE /api/user -> No Content

其它不常用的 verbs,

  • HEAD 与 GET 类似,但是响应中没有 body。
  • CONNECT 用于和资源所在的服务器建立隧道。
  • OPTIONS 用于获取服务器允许的操作,即允许使用的 HTTP Verbs。
  • TRACE 用于调试信息。

HTTP Verbs 特性

HTTP Verbs 可以按照安全性、幂等性和是否可缓存进行分组,这里我们看一下常用的 GET、POST、PUT、PATCH 和 DELETE 的特性。

安全性指的是 HTTP 请求不会对服务器资源造成破坏,一般只读的 HTTP 请求都有安全性,例如 GET。

幂等性指定的是发送多次相同的 HTTP 请求时,等同于只发送了一次请求,对服务器资源的修改结果是相同的,这里 GET、PUT 和 DELETE 有幂等性。拿 DELETE 来说,再请求一次删除资源时,该资源已经删除,后续再发送多个 DELETE 请求,都不会再对服务器上的资源造成任何变化。而 POST 不具有幂等性,是因为如果发送多次相同的请求,可能会在服务器创建多个资源实例。

是否可缓存指的是请求结果能否被浏览器缓存。一般 GET 请求可以被缓存,而 POST 或 PATCTH 返回的响应 body 也可以根据响应 Header 中有关缓存的设置来进行缓存,其它的则不能缓存。

小结

好了,这个就是 2 分钟了解 HTTP verbs,你学会了吗?如果有帮助请三连并关注,想学更多的开发知识,可以在评论区留言,感谢观看!