常見請求方式區別

2021-10-10 08:23:54 字數 1328 閱讀 3929

常用的請求方法裡面get請求和post請求我們都非常熟悉了,今天來談談post,put以及patch,在了解這些之前我們先理解乙個概念 冪等性:

冪等性:

http協議本身是一種面向資源的應用層協議,但對http協議的使用實際上存在著兩種不同的方式:

一種是restful的,它把http當成應用層協議,比較忠實地遵守了http協議的各種規定;

另一種是soa的,它並沒有完全把http當成應用層協議,而是把http協議作為了傳輸層協議,然後在http之上建立了自己的應用層協議。

patch 與 put 屬性上的乙個重要區別還在於:put 是冪等的,而 patch 不是冪等的。

冪等是乙個數學和計算機學概念,在計算機範疇內表示乙個操作執行任意次對系統的影響跟一次是相同。

get方法用於獲取資源,不應有***,所以是冪等的。比如:get 不會改變資源的狀態,不論呼叫一次還是n次都沒有***。請注意,這裡強調的是一次和n次具有相同的***,而不是每次get的結果相同。get 這個http請求可能會每次得到不同的結果,但它本身並沒有產生任何***,因而是滿足冪等性的。

delete方法用於刪除資源,有***,但它應該滿足冪等性。比如:delete 呼叫一次和n次對系統產生的***是相同的,即刪掉id為4231的帖子;因此,呼叫者可以多次呼叫或重新整理頁面而不必擔心引起錯誤。

post和put的區別容易被簡單地誤認為「post表示建立資源,put表示更新資源.但實際上兩者都可以用來建立或是更新資料.單從技術上來說,他們並沒有什麼區別.但是在http規範中post是非等冪的,多次呼叫會產生不同的結果,比如:建立乙個使用者,由於網路原因或是其他原因多建立了幾次,那麼將會有多個使用者被建立.而put id/456則會建立乙個id為456的使用者,多次呼叫還是會建立的結果是一樣的,所以put是等冪的.

patch一般是用來區域性更新資源的,假設我們有乙個userinfo,裡面有userid, username, usergender等10個字段。可你的編輯功能因為需求,在某個特別的頁面裡只能修改username,這時候的更新怎麼做?

人們通常(為徒省事)把乙個包含了修改後username的完整userinfo物件傳給後端,做完整更新。但仔細想想,這種做法感覺有點二,而且真心浪費頻寬(純技術上講,你不關心頻寬那是你土豪)。

於是patch誕生,只傳乙個username到指定資源去,表示該請求是乙個區域性更新,後端僅更新接收到的字段。

而put雖然也是更新資源,但要求前端提供的一定是乙個完整的資源物件,理論上說,如果你用了put,但卻沒有提供完整的userinfo,那麼缺了的那些字段應該被清空.另外put會有乙個create操作,加入更新的id不存在,會進行建立,而patch則沒有這個.

幾種常見網路請求方式

head 只請求頁面的首部,head和get本質是一樣的,區別在於head不含有呈現資料,而僅僅是http頭資訊,用於檢查物件是否存在,以及得到物件的元資料。post 向伺服器提交資料,請求伺服器接受所指定的文件作為對所標識的uri的新的從屬實體。put 從客戶端向伺服器傳送的資料取代指定的文件的內...

Django的常見請求方式

常見請求方式 if request.method post 判斷使用者的請求方式 request.get.get args值 get方式獲取網頁引數值 request.post.get 表單name值 post方式獲取表單提交的值 request.post.getlist 表單name值 以列表形式...

web請求方式的區別

1 get是用來從伺服器上獲得資料,而post是用來向伺服器上傳遞資料。2 get將表單中資料的按照variable value的形式,新增到action所指向的url後面,並且兩者使用 連線,而各個變數之間使用 連線 post是將表單中的資料放在form的資料體中,按照變數和值相對應的方式,傳遞到...