HTTP 有哪些方法?

HTTP 方法

HTTP1.0 定義了三種請求方法:GET,POST 和 HEAD 方法

HTTP1.1 新增了六種請求方法:OPTIONS,PUT,PATCH,DELETE,TRACE 和 CONNECT

這些方法的具體作用是什麼?

方法 描述

GET

通常用於請求服務器發送某些資源

POST

發送數據給服務器

HEAD

請求資源的頭部信息,並且這些頭部與 HTTP GET 方法請求時返回的一致

該請求方法的一個使用場景是在下載一個大文件前先獲取其大小再決定是否要下載,以此可以節約帶寬資源

或者是欲判斷某一資源是否存在,使用 HEAD 要比 GET 要更好一些

OPTIONS

當發起跨域請求時,瀏覽器常發送 OPTIONS 預請求,用於檢測服務器允許的 http 方法

若服務器接受該跨域請求,瀏覽器纔會繼續發送正式請求

PUT

發送數據給服務器

PATCH

用於對資源進行部分修改

DELETE 用於刪除指定的資源
TRACE

回顯服務器收到的請求,主要用於測試或診斷

CONNECT

其作用就是將服務器作爲代理,讓服務器代替用戶去訪問其他頁面(說白了就是翻牆),然後將數據返回給用戶

冪等概念

定義:同一個請求方法執行多次和僅執行一次的效果完全相同,即爲冪等

GET 和 POST 有什麼區別?

區別 描述

數據傳輸方式不同

GET 請求通過 URL 傳輸數據,而 POST 的數據通過請求體傳輸

安全性不同

POST 的數據因爲在請求主體內,所以有一定的安全性保證

而 GET 的數據在 URL 中,通過歷史記錄很容易查到數據信息

特性不同

GET 是安全(這裏的安全是指只讀特性,就是使用這個方法不會引起服務器狀態變化)且冪等

而 POST 是非安全非冪等

GET 無害

刷新、後退等瀏覽器操作 GET 請求是無害的,POST 可能重複提交表單

數據類型不同

GET 只允許 ASCII 字符,而 POST無限制

PUT 和 POST 都是給服務器發送新增資源,有什麼區別?

最主要的區別是:PUT 是冪等的,而 POST 非冪等

除此之外還有一個區別,通常情況下,PUT 的 URI 指向是具體單一資源,而 POST 可以指向資源集合

舉個例子,我們在開發一個博客系統,當我們要創建一篇文章的時候往往用 POST 

https://www.jianshu.com/articles,這個請求的語義是,在 articles 的資源集合下創建一篇新的文章,如果我們多次提交這個請求會創建多個文章,這是非冪等的

而 PUT 

https://www.jianshu.com/articles/123456 的語義是更新對應文章下的資源(比如修改作者名稱等),這個 URI 指向的就是單一資源,而且是冪等的,比如你把『劉德華』修改成『彭于晏』,提交多少次都是修改成『彭于晏』

PS:『POST表示創建資源,PUT表示更新資源』這種說法是錯誤的,兩個都能創建資源,根本區別就在於冪等性

PUT 和 PATCH 都是給服務器發送修改資源,有什麼區別?

區別一:PUT 是冪等的,PATCH 是非冪等的

區別二:PUT 和 PATCH 都是更新資源,而 PATCH 用來對已知資源進行局部更新

比如我們有一篇文章的地址 https://www.jianshu.com/articles/123456,這篇文章的可以表示爲:

article = {
  author: "lzw",
  age: 18,
  id: 007,
};

當我們要修改文章的作者的年齡時,我們可以直接發送 PUT 請求:https://www.jianshu.com/articles/123456,這個時候的數據應該是:

article = {
  author: "lzw",
  age: 20,
  id: 007,
};

如果你不想每次都帶有這麼多無用的信息,那麼可以發送 PATCH 請求:https://www.jianshu.com/articles/123456,這個時候只需要:

article = {
  age: 20,
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章