? REST API – HTTP Status Codes
? 10大REST API常見問題?
Payload攜帶數據,數據可以以各種格式構建,如JSON、XML甚至純文本。在RESTful API領域,由于其輕量級和易用性,JSON仍然是最受歡迎的選擇。
伴隨Payload的是HTTP標頭,提供有關Payload的元信息,例如其類型(內容類型標頭,例如應用程序/json)和長度(內容長度標頭)。
HTTP請求消息中的“內容類型”標頭名稱用于表示HTTP請求消息中的Payload格式。例如JSON、XML等。
HTTP請求消息中的“接受”頭名稱用于表示HTTP響應消息中的預期Payload格式。示例:JSON、XML、純文本、HTML等。
GET:通常,GET請求獲取數據。雖然這些請求通常沒有請求主體(Payload),但一些高級API可能會使用該主體來發(fā)送廣泛的搜索或過濾標準。
POST:創(chuàng)建新資源時,Payload通常攜帶新實體的數據。
PUT:用于更新資源,這里的Payload包含完整的更新數據。
補?。?/strong>此方法用于部分更新,Payload僅包含用于修改的特定字段。
刪除:雖然刪除操作通常沒有Payload,但一些API希望在請求正文中添加額外的刪除相關數據。
帶有JSON Payload的HTTP請求消息通常結構為:
讓我們來舉個例子。想象一下,您正在開發(fā)一個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"
}
請求行:
標題:
空白行:這將標題與正文分開。
消息正文:包含代表書籍詳細信息的JSON有效負載。
這是一個基本的例子。在現實世界的場景中,可能會有額外的標頭,如用于身份驗證目的的授權,或根據API的要求出現其他復雜性。
讓我們考慮一個場景來延續(xù)上一本書的例子。假設服務器處理了添加新書的請求,現在想要向客戶端返回確認。
HTTP響應消息示例:
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)線:
標題:
空白行:這將標題與正文分開。
消息正文:包含JSON Payload,在本例中,該Payload提供了已添加書籍的詳細信息以及確認成功添加的消息。
同樣,這是一個簡單的例子。根據API和應用程序的需求,現實世界的場景可能會有額外的標頭或復雜性。
消費者意味著客戶端應用程序有責任準備和發(fā)送HTTP請求消息,如下所示:
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請求中,Payload是指HTTP請求消息中的正文。它是可選的,取決于HTTP方法名稱,即
上述HTTP請求消息中的“內容類型”標頭名稱用于表示HTTP請求消息中的Payload格式,Payload格式為XML。
HTTP請求消息中的“接受”標頭名稱用于表示HTTP響應消息中的預期Payload格式,Payload格式為XML。
業(yè)務組件(由服務提供商開發(fā))有責任準備和發(fā)送HTTP響應消息,如下所示:
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響應消息包含任何一個HTTP狀態(tài)代碼,范圍在100到599之間:
信息:1xx
成功:2xx
重定向:3xx
客戶端錯誤:4xx
服務器端錯誤:5xx
> 在REST API上閱讀有關HTTP狀態(tài)代碼的更多信息__-HTTP狀態(tài)代碼__
從上述響應消息中,有效負載是指HTTP響應消息中的正文,有效負載為XML格式。
英文原文: What is Payload in REST API?