我正在开发一个项目,我正在构建前端,而其他人正在构建API。我为所有请求提出了以下结构,以JSON发送:
{
"success": true, // true/false
"message": null, // a string if success==false indicating the error
"data": {} // The actual data in the response
}
他们更感兴趣的是使API更加RESTful,而不是“消息”字段,他们建议在HTTP标头中的状态代码消息中发回消息,例如:
HTTP/1.1 401 Authentication Failed for john.smith@example.com. Please log in again.
并且前端会显示“john.smith@example.com身份验证失败。请重新登录”。在弹出窗口或其他东西。
我担心长度限制,但我找不到任何表示没有最大长度的东西。我们应该确保将这些消息保持在最小长度吗?有没有充分的理由不这样做,而是将其作为内容(JSON或纯文本)发回?
答案 0 :(得分:2)
稍微进行一些测试会有很长的路要走,但你应该可以这样做,事实上RFC具体说明了:
此处列出的原因仅是建议 - 它们可以替换为本地等效项而不影响协议。
您唯一可能关注的是标题大小(某些服务器可能有限制,但我认为它们都相对较大)以及某些旧版浏览器可能会对此作出反应。坦率地说,我认为使用响应体更有意义,因为它更易于解释和清除,但是你的方法应该没有任何问题。
答案 1 :(得分:0)
我想补充一点,尽管规范中可能没有限制,但是当我尝试使用Jetty 9.4.14进行类似OP的操作时,确实有机会截断状态消息。
我花了一些时间来查找被截断的消息的原因-有一个硬编码的1024个字符的不可配置限制[请参见方法getReasonBytes(String)]。
(由于缺乏声誉而无法将其发布为评论)