? REST API – HTTP Status Codes
? 10大REST API常見問題?

Payload組成

內(nèi)容:

Payload攜帶數(shù)據(jù),數(shù)據(jù)可以以各種格式構(gòu)建,如JSON、XML甚至純文本。在RESTful API領(lǐng)域,由于其輕量級(jí)和易用性,JSON仍然是最受歡迎的選擇。

HTTP標(biāo)頭:

伴隨Payload的是HTTP標(biāo)頭,提供有關(guān)Payload的元信息,例如其類型(內(nèi)容類型標(biāo)頭,例如應(yīng)用程序/json)和長(zhǎng)度(內(nèi)容長(zhǎng)度標(biāo)頭)。

HTTP請(qǐng)求消息中的“內(nèi)容類型”標(biāo)頭名稱用于表示HTTP請(qǐng)求消息中的Payload格式。例如JSON、XML等。

HTTP請(qǐng)求消息中的“接受”頭名稱用于表示HTTP響應(yīng)消息中的預(yù)期Payload格式。示例:JSON、XML、純文本、HTML等。

不同HTTP方法中的Payload

GET:通常,GET請(qǐng)求獲取數(shù)據(jù)。雖然這些請(qǐng)求通常沒有請(qǐng)求主體(Payload),但一些高級(jí)API可能會(huì)使用該主體來發(fā)送廣泛的搜索或過濾標(biāo)準(zhǔn)。

POST:創(chuàng)建新資源時(shí),Payload通常攜帶新實(shí)體的數(shù)據(jù)。

PUT:用于更新資源,這里的Payload包含完整的更新數(shù)據(jù)。

補(bǔ)?。?/strong>此方法用于部分更新,Payload僅包含用于修改的特定字段。

刪除:雖然刪除操作通常沒有Payload,但一些API希望在請(qǐng)求正文中添加額外的刪除相關(guān)數(shù)據(jù)。

HTTP請(qǐng)求和響應(yīng)Payload JSON示例

HTTP請(qǐng)求消息示例:

帶有JSON Payload的HTTP請(qǐng)求消息通常結(jié)構(gòu)為:

讓我們來舉個(gè)例子。想象一下,您正在開發(fā)一個(gè)RESTful API來管理圖書集合,并且您想在集合中添加一本新圖書。

POST /api/books HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: application/json
Content-Type: application/json
Content-Length: 112

{
"title": "The Great Gatsby",
"author": "F. Scott Fitzgerald",
"year": 1925,
"genre": "Fiction"
}

解釋:

請(qǐng)求行:

標(biāo)題:

空白行:這將標(biāo)題與正文分開。

消息正文:包含代表書籍詳細(xì)信息的JSON有效負(fù)載。

這是一個(gè)基本的例子。在現(xiàn)實(shí)世界的場(chǎng)景中,可能會(huì)有額外的標(biāo)頭,如用于身份驗(yàn)證目的的授權(quán),或根據(jù)API的要求出現(xiàn)其他復(fù)雜性。

HTTP響應(yīng)消息示例:

讓我們考慮一個(gè)場(chǎng)景來延續(xù)上一本書的例子。假設(shè)服務(wù)器處理了添加新書的請(qǐng)求,現(xiàn)在想要向客戶端返回確認(rèn)。

HTTP響應(yīng)消息示例:

HTTP/1.1 201 Created
Date: Mon, 15 Aug 2023 12:30:00 GMT
Server: Apache/2.4.1 (Unix)
Content-Type: application/json
Content-Length: 150

{
"id": 12345,
"title": "The Great Gatsby",
"author": "F. Scott Fitzgerald",
"year": 1925,
"genre": "Fiction",
"message": "Book successfully added!"
}

解釋:

狀態(tài)線:

標(biāo)題:

空白行:這將標(biāo)題與正文分開。

消息正文:包含JSON Payload,在本例中,該P(yáng)ayload提供了已添加書籍的詳細(xì)信息以及確認(rèn)成功添加的消息。

同樣,這是一個(gè)簡(jiǎn)單的例子。根據(jù)API和應(yīng)用程序的需求,現(xiàn)實(shí)世界的場(chǎng)景可能會(huì)有額外的標(biāo)頭或復(fù)雜性。

HTTP請(qǐng)求和響應(yīng)Payload XML示例

HTTP請(qǐng)求XML Payload示例

消費(fèi)者意味著客戶端應(yīng)用程序有責(zé)任準(zhǔn)備和發(fā)送HTTP請(qǐng)求消息,如下所示:

POST /SpringBootREST/customers HTTP/1.1
Accept: application/xml
Content-Type: application/xml
Content-Length: 196
User-Agent: Java/1.7.0_25
Host: 127.0.0.1:7000
Connection: keep-alive

0
Ramesh
ramesh@gmail.com

從上述HTTP請(qǐng)求中,Payload是指HTTP請(qǐng)求消息中的正文。它是可選的,取決于HTTP方法名稱,即

上述HTTP請(qǐng)求消息中的“內(nèi)容類型”標(biāo)頭名稱用于表示HTTP請(qǐng)求消息中的Payload格式,Payload格式為XML。

HTTP請(qǐng)求消息中的“接受”標(biāo)頭名稱用于表示HTTP響應(yīng)消息中的預(yù)期Payload格式,Payload格式為XML。

Http響應(yīng)XML Payload示例

業(yè)務(wù)組件(由服務(wù)提供商開發(fā))有責(zé)任準(zhǔn)備和發(fā)送HTTP響應(yīng)消息,如下所示:

HTTP/1.1 200 OK
Content-Type: application/xml
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
Date: Mon, 10 Nov 2019 09:45:34 GMT

1
Ramesh
ramesh@gmail.com

HTTP響應(yīng)消息包含任何一個(gè)HTTP狀態(tài)代碼,范圍在100到599之間:

信息:1xx

成功:2xx

重定向:3xx

客戶端錯(cuò)誤:4xx

服務(wù)器端錯(cuò)誤:5xx

> 在REST API上閱讀有關(guān)HTTP狀態(tài)代碼的更多信息__-HTTP狀態(tài)代碼__

從上述響應(yīng)消息中,有效負(fù)載是指HTTP響應(yīng)消息中的正文,有效負(fù)載為XML格式。

參考資料

英文原文: What is Payload in REST API?

一站搜索、試用、比較全球API!
冪簡(jiǎn)集成已收錄 4993種API!
試用API,一次比較多個(gè)渠道