是否有最大 HTTP 状态代码消息长度?

jkj*_*ing 6 javascript rest json http-status-codes

我正在开发一个项目,我正在构建前端而其他人正在构建 API。我为所有请求提出了以下结构,以 JSON 形式发送:

{
  "success": true, // true/false
  "message": null, // a string if success==false indicating the error
  "data": {} // The actual data in the response
}
Run Code Online (Sandbox Code Playgroud)

他们更感兴趣的是使 API 更加 RESTful,并且他们提议在状态代码消息中发送一条消息,而不是“消息”字段,在 HTTP 标头中,例如:

HTTP/1.1 401 Authentication Failed for john.smith@example.com. Please log in again.
Run Code Online (Sandbox Code Playgroud)

并且前端将显示“john.smith@example.com 的身份验证失败。请重新登录。” 在弹出窗口或其他东西中。

我担心长度限制,但我找不到任何表明没有最大长度的内容。我们是否应该确保将这些消息保持在最小长度?是否有充分的理由不这样做,而是将其作为内容(JSON 或纯文本)发回?

Exp*_*lls 4

进行一些测试会大有帮助,但您应该可以这样做,事实上 RFC特别指出:

此处列出的原因短语只是建议——它们可以被本地等效项替换,而不影响协议。

您可能唯一担心的是标头大小(某些服务器可能有限制,但我认为它们都相对较大)以及一些较旧的浏览器对此有何反应。坦率地说,我认为使用响应主体更有意义,因为它更容易解释和清晰,但你的方法不应该有任何问题。

  • 仅供参考,RFC 2616 上个月已被 RFC 7231 至 7235 取代。RFC 7230 指定了各种元素的长度要求,但不是状态响应中的“原因短语”。 (2认同)