HTTP POST請求最常用于創(chuàng)建新資源。當(dāng)嚴(yán)格按照REST的術(shù)語進(jìn)行交談時(shí),POST方法用于在資源集合中創(chuàng)建新資源。
創(chuàng)建成功后,將返回HTTP代碼201,創(chuàng)建資源的地址也會在“位置”標(biāo)頭中傳輸。
以下是HTTP POST請求的一些示例:
HTTP帖子 - http://www.domain/api/users - 創(chuàng)建用戶
HTTP帖子 - http://www.domain/api/posts - 創(chuàng)建帖子
HTTP帖子 - http://www.domain/api/posts/{postId}/comments - 為帖子創(chuàng)建新評論,id = postId
使用PUT API主要用于更新現(xiàn)有資源(如果資源不存在,則API可能會決定是否創(chuàng)建新資源)。如果PUT API創(chuàng)建了新資源,原始服務(wù)器必須通過HTTP響應(yīng)代碼201(已創(chuàng)建)響應(yīng)通知用戶代理,如果現(xiàn)有資源被修改,則應(yīng)發(fā)送200(OK)或204(無內(nèi)容)響應(yīng)代碼,以指示請求成功完成。
以下是HTTP Put請求的一些示例:
HTTP PUT -?http://www.domain/api/users/{username} -?更新用戶
HTTP PUT -?http://www.domain/api/posts/{id}?- 按id更新帖子
HTTP PUT -?http://www.domain/api/posts/{postId}/comments/{id}?- 如果它屬于帶有id = postId的帖子,則通過id更新評論
POST和PUT API之間的區(qū)別可以在請求URI中觀察到。POST請求是在資源集合上進(jìn)行的,而PUT請求是在單個(gè)資源上進(jìn)行的。
使用DELETE API刪除資源(由Request-URI標(biāo)識)。
如果響應(yīng)包括描述狀態(tài)的實(shí)體,則DELETE請求的成功響應(yīng)應(yīng)該是HTTP響應(yīng)代碼200(OK),如果操作已排隊(duì),則為202(已接受),如果已執(zhí)行操作但響應(yīng)不包括實(shí)體,則應(yīng)為204(無內(nèi)容)。
以下是HTTP刪除請求的一些示例:
刪除 http://www.domain/api/users/{用戶名} - 刪除用戶
刪除 http://www.domain/api/posts/{id} - 刪除帖子
刪除 http://www.domain/api/posts/{postId}/comments/{id}-如果評論屬于id = postId的帖子,則刪除id評論
HTTP PATCH請求是對資源進(jìn)行部分更新。如果您看到PUT請求也修改了資源實(shí)體,因此為了更清楚,PATCH方法是部分更新現(xiàn)有資源的正確選擇,并且僅當(dāng)您要完全替換資源時(shí)才應(yīng)使用PUT。
示例:
更新電子郵件的示例補(bǔ)丁請求將如下:
HTTP補(bǔ)丁/用戶/1
[
{ “op”: “replace”, “path”: “/email”, “value”: “new.email@example.org” }
]
當(dāng)客戶端需要完全替換現(xiàn)有資源時(shí),他們可以使用PUT。當(dāng)他們進(jìn)行部分更新時(shí),他們可以使用HTTP PATCH。
例如,在更新資源的單個(gè)字段時(shí),發(fā)送完整的資源表示可能很麻煩,并會使用大量不必要的帶寬。在這種情況下,PATCH的語義更有意義。
這里需要考慮的另一個(gè)重要方面是冪等;PUT是冪等;PATCH可以,但不需要。因此,根據(jù)我們正在實(shí)施的操作的語義,我們也可以根據(jù)這個(gè)特征選擇一個(gè)或另一個(gè)。
用于用戶管理應(yīng)用程序的REST API–以下五個(gè)用于用戶資源的REST API:
英文原文: REST API – HTTP Methods
官方HTTP Mehods說明