? REST API – HTTP Status Codes
? 10大REST API常見問題?
Payload攜帶數(shù)據(jù),數(shù)據(jù)可以以各種格式構(gòu)建,如JSON、XML甚至純文本。在RESTful API領(lǐng)域,由于其輕量級(jí)和易用性,JSON仍然是最受歡迎的選擇。
伴隨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等。
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ù)。
帶有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ù)雜性。
讓我們考慮一個(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ù)雜性。
消費(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。
業(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?