我已經看到很多使用 REST API 的應用程式在其回應正文中回傳狀態代碼,盡管 HTTP 回應回傳狀態代碼就好了。是否有任何理由將狀態代碼也放在回應正文中?
uj5u.com熱心網友回復:
一些 API 為所有請求回傳 200,甚至是錯誤的請求,并在回應正文中放置一個狀態代碼。此狀態代碼可能會模仿 HTTP 狀態代碼,但并非必須如此。對于所有關心的人,您可以從 1 開始編號您的回應狀態。
其他 API 回傳適當的 HTTP 狀態代碼,實際上,在回應中放置相同的狀態代碼。這只是對帶寬和腦細胞的浪費,也是很多人頭疼的原因。這是不必要的。除了...
它可能對某些型別的客戶端庫有用。當客戶端應用程式使用抽象掉所有HTTP 內容的庫時,它可以只向程式員回傳一個包含有關回應的所有資訊的物件。
就像是:
{
"status": 200,
"data": {
"foo" : "bar"
}
}
和:
{
"status": 401,
"data": null,
"message": "You are not authorized."
}
通過這種方式,庫作者可以將 HTTP 狀態代碼放入物件的 status 屬性中,呼叫者不必處理例外處理。
但是 API 仍然沒有理由在 HTTP 狀態代碼和回應中回應它。
uj5u.com熱心網友回復:
是否有任何理由將狀態代碼也放在回應正文中?
是的,狀態行是 HTTP 元資料,描述回應訊息的語意。與其他 HTTP 元資料一樣,它并不是真正為最終客戶端使用而設計的。
考慮 Web 體驗 -瀏覽器可以看到 HTTP 回應訊息,并可以對其采取行動。但是您想與用戶分享哪些資訊?在你想要的用戶知道HTTP狀態代碼的情況下,您將其包含在HTML表示也。
HTTP API 的問題詳細資訊在其架構中包含一個可選的狀態欄位,以便為客戶端顯示該資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/359672.html
上一篇:有沒有辦法在Dart/Flutter(REST)中根據物件值顯示快照資料?
下一篇:獲取錯誤:org.glassfish.jersey.server.ContainerException:java.lang.NoClassDefFoundError:javax/validation/
