概念解釋
冪等性
http冪等方法,是指無論調用多少次都不會產生不同副作用(數據變更)的http方法
簡單解釋:
重復發送同一個請求多次,結果同發送一次
操作示例:
GET /tickets # 獲取ticket列表
GET /tickets/12 # 查看某個具體的ticket
POST /tickets # 新建一個ticket
PUT /tickets/12 # 更新ticket 12
PATCH /tickets/12 # 更新ticket 12
DELETE /tickets/12 # 刪除ticekt 12
HTTP GET(冪等)
get用於獲取資源,不管調用多少次接口,返回結果保持不變,不會改變資源。如:
第一次調用 GET /tickets , 后台返回tickets列表(我想看下還有多少張票)
第二次調用 GET /tickets , 返回同樣的數據(我想再看一遍tickets信息)
ps: 我多看一眼,總不會把你的票看沒了吧,我看或者不看你就在那里
HTTP POST(非冪等)
post用於創建資源,每次調用都會創建一個新的資源,如
第一次調用 POST /tickets ,后台產生 /tickets/1 這么一個資源(我要新增一張票)
第二次調用 POST /tickets , 后台產生 /tickets/2 這么一個資源(我要再新增一張票)
ps:我是生產車票的,所以我不會產生重復的車票(id至少不一樣)
HTTP PUT(冪等)
put用於更新資源,沒有的話則執行創建操作。如:
第一次調用 PUT /tickets/11 , 后台創建 /tickets/11 (幫我看下11號票在不在,在的話更新下狀態,不在的話創建下)
第二次調用 PUT /tickets/11 , 后台更新 /tickets/11 (幫我看下11號票在不在,在的話更新下狀態,不在的話創建下)
由於兩次請求攜帶的數據是一樣的,所以不論請求多少次,最終的結果都是后台存在這么一個資源(創建或更新)
ps:我有強迫症加健忘症,同樣的事我可能會讓你干很多遍,你給我小心處理哈,我可不想看到不同的結果
HTTP DELETE(冪等)
delete用於刪除資源,會將資源從后台刪除。如:
第一次調用 DELETE /tickets/11 , 后台刪除 /tickets/11對應的數據信息 (11號票我不要了,幫我刪除下吧)
第二次調用 DELETE /tickets/11 , 后台判斷 /tickets/11不存在,無操作(11號票我不記得有沒有刪除,幫我刪除下吧)
ps:我也有健忘症啊,同樣的事我也可能會干很多遍,你忽略就好了,給我個眼神(返回碼),我就知道了
備注:
/tickets/12 這種叫做uri,一個uri代表一個資源,本例中代表一張票(實際可能對應數據庫中的一行信息),
所以上述描述的創建,刪除,更新資源,都是指根據uri及其所附帶信息實際操作uri對應的后台資源。