發送了以下 HTTP 請求并收到了 HTTP 400 回應。導致它失敗的請求有什么問題?
POST /api/v2/organizations/4523jddfgd/projects HTTP/1.1
Host: www.reddit.com
Content-Type: application/json
Authorization: Bearer VALID_API_TOKEN
[
"name": "Project 1",
"package": "Standard",
"address": {
"street": "12456 Main St",
"city": "Dallas",
"zip": "75200",
"state": "TX",
"country": "USA"
}
]
這是一道面試題,能幫到大家嗎?
uj5u.com熱心網友回復:
查看有關 HTML 狀態代碼 400的MDN wiki 頁面。
狀態碼 400 指向客戶端錯誤,例如格式錯誤的請求正文。另一個原因可能是缺少必需的標頭。如 MDN wiki 頁面所示,您不應嘗試再次發送未經修改的相同請求,因為結果將是相同的,因為它不是服務器端問題。
您應該做的是:再次查閱 API 檔案并確保沒有缺少標頭并且請求正文是有效的(即有效的 JSON/XML/ 正確結構中的任何內容)。
查看您的請求,我可以看到正文不是有效的 JSON。
[
"name": "Project 1",
"package": "Standard",
"address": {
"street": "12456 Main St",
"city": "Dallas",
"zip": "75200",
"state": "TX",
"country": "USA"
}
]
這無法決議,因此出現錯誤。陣列不能保存屬性。缺少的是一個{and}之后的[and 之前的 close ]。使用以下請求正文應該可以作業。
[
{
"name":"Project 1",
"package":"Standard",
"address":{
"street":"12456 Main St",
"city":"Dallas",
"zip":"75200",
"state":"TX",
"country":"USA"
}
}
]
編輯
正如@Evert 指出的那樣,您更有可能需要替換[]為{}POST 請求用于創建單個新資源。但您可以絕對確定的唯一方法是閱讀 API 檔案。
{
"name":"Project 1",
"package":"Standard",
"address":{
"street":"12456 Main St",
"city":"Dallas",
"zip":"75200",
"state":"TX",
"country":"USA"
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/443174.html
