亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

400錯誤請求HTTP錯誤代碼意味著?

400錯誤請求HTTP錯誤代碼意味著?

德瑪西亞99 2019-06-20 17:17:49
400錯誤請求HTTP錯誤代碼意味著?我有一個JSON請求,我將其發送到HTTPURL。如果這被視為400哪里requestedResource字段存在但"Roman"此字段的值無效嗎?[{requestedResource:"Roman"}]如果這被視為400哪里"blah"場根本不存在?[{blah:"Roman"}]
查看完整描述

3 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

A 400表示請求格式錯誤。換句話說,客戶端發送到服務器的數據流不遵循規則。

對于帶有JSON有效負載的RESTAPI,400通常(我要說是正確的)用來表示JSON在某種程度上是無效的,根據服務的API規范。

按照這種邏輯,您提供的兩個場景都應該是400個。

想象一下,這是XML而不是JSON。在這兩種情況下,XML都不會通過模式驗證-要么是因為一個未定義的元素,要么是一個不正確的元素值。這是個很糟糕的要求。這里也是一樣的。


查看完整回答
反對 回復 2019-06-20
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

從…w3.org

10.4.1 400不良請求

由于格式錯誤,服務器無法理解請求。客戶端不應在沒有修改的情況下重復請求。


查看完整回答
反對 回復 2019-06-20
?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

選擇HTTP響應代碼非常容易,可以用簡單的規則來描述。經常被遺忘的唯一棘手的部分是RFC 7231的第6.5段:

除非響應HEAD請求,否則服務器應該發送包含錯誤情況解釋的表示,以及它是臨時的還是永久性的。

規則如下:

  1. 如果請求成功,則返回2xx代碼(3xx用于重定向)。如果服務器上存在內部邏輯錯誤,則返回5xx。如果客戶端請求中有任何錯誤,則返回4xx代碼。
  2. 查看選定類別的可用響應代碼。如果其中之一的名稱與您的情況非常匹配,您可以使用它。否則,只返回到x00代碼(200,400,500)。如果你懷疑,回到x00代碼。
  3. 返回響應體中的錯誤描述。對于4xx代碼,它必須包含足夠的信息,以便客戶端開發人員了解原因并修復客戶端。對于5xx,由于安全原因,不需要透露任何細節。
  4. 如果客戶端需要區分不同的錯誤,并根據不同的錯誤有不同的反應,請定義一種機器可讀和可擴展的錯誤格式,并在API中的任何地方使用它。從一開始就這樣做是很好的做法。
  5. 請記住,客戶端開發人員可能會做一些奇怪的事情,并嘗試解析字符串,這些字符串作為人類可讀的描述返回。通過更改字符串,您將破壞如此糟糕的客戶端。因此,請始終提供機器可讀的描述,并盡量避免在文本中報告其他信息。

因此,在您的例子中,我返回了400個錯誤,如果從用戶輸入中獲得“Roman”,客戶端必須有特定的反應:

{
    "error_type" : "unsupported_resource",
    "error_description" : "\"Roman\" is not supported"
}

或者更一般的錯誤,如果這種情況在客戶端是一個糟糕的邏輯錯誤,并且是不被期望的,除非開發人員做錯了什么:

{
    "error_type" : "malformed_json",
    "error_description" : "\"Roman\" is not supported for \"requestedResource\" field"
}


查看完整回答
反對 回復 2019-06-20
  • 3 回答
  • 0 關注
  • 5460 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號