根据https://labs.omniti.com/labs/jsend,
这是否可以解释为 4xx 错误(例如 404)应始终返回失败,但 5xx 错误始终对应于错误?
小智 6
这是一个很好的问题,我将根据我自己的经验用一个具体的例子来回答它。在我的一个项目的 API 中,我允许上传 Excel 电子表格,该电子表格经过处理并将生成的 JSON 存储在服务器上。
如果将数据保存到磁盘时出现错误,那么我会以 JSend“错误”以及相应的错误消息作为响应,因为数据应该能够被保存。
另一方面,如果其中一行中的数据无效(可能是数据类型不正确或范围错误),那么我知道电子表格中不正确的确切行(或行)。在这种情况下,“失败”响应是合适的data,因为 JSend 响应的属性将包含每个不可处理行的所有行(行号和错误消息)的列表。
在“错误”响应的情况下,我不会有这种能力,因为我将仅限于单个message属性。但是有了“失败”响应,我就有了data可用的属性,我可以用一个细粒度的问题列表来响应。
因此,虽然没有错误,但数据本身并不正确,用户应该返回并查看他们的电子表格并修复data“失败”响应中属性确定的问题。
从 HTTP 错误的角度考虑这一点,虽然是一个有趣的练习,但并不总是会产生精确的映射(4xx = 失败,5xx = 错误)。它更多地是关于您想与客户端通信的内容:发生了不应该发生的坏事(“错误”)或服务器工作正常但您的数据不完全符合标准(“失败”)。
最后,您是否还想使用 HTTP 错误完全取决于您。你总是可以用 200 来回应,让 JSend 来说话。但这是一个稍微不同(有点宗教)的讨论。:-)
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
1663 次 |
| 最近记录: |