gpt4 book ai didi

http-status-codes - 对非 HTTP 错误使用 HTTP 状态代码是否合适?

转载 作者:行者123 更新时间:2023-12-05 05:26:07 25 4
gpt4 key购买 nike

我认识一个正在编写 API 的人,他想使用 HTTP 状态代码来报告查询结果。例如如果用户调用 example.com/api/product_info?product_id=X,并且该产品不存在,它将返回 HTTP 状态 400:错误请求。我认为,因为这是一个有效的调用(即实际的 HTTP 请求没有格式错误),它应该返回一个 200 代码响应,并且只有响应的主体类似于 {状态:“错误”;消息:“没有这样的产品”

所以我的问题是,

1) 如上例所示,使用 HTTP 状态码来传达非 HTTP 程序状态是否合适?

2) 是否有一些标准的或至少广泛使用的规范来描述何时适合使用 HTTP 状态代码?

最佳答案

前几天我实际上只是在谈论这个 - http://blogs.mulesoft.org/api-best-practices-response-handling/

您的状态代码应该反射(reflect) API 的响应,因为 200 是“OK”并且应该用于成功返回的数据。但是,201 应该用于创建的项目。

如前所述,如果用户尝试调用但失败(即:users/?id=5),服务器可以返回 400 以通知用户这是一个错误请求,或者返回 404如果资源不存在。

这也取决于操作 - 如果他们正在搜索用户并且没有响应,我不会返回错误,只是返回 200 没有找到结果。但是,如果他们试图对不存在的用户执行 PUT 或 PATCH,我会告诉他们错误 - 因为他们的应用程序中某处可能存在问题。

在上面发布的链接中,您会找到更多状态代码,但使用状态代码的最大优势之一是它通过 header 通知客户端服务器实际发生了什么。这允许他们进行相对快速(和低内存)的检查,而不必反序列化正文并循环遍历数组以查找错误键。

从本质上讲,您是在为他们提供工具以快速轻松地了解正在发生的事情 - 我认为每个(理智的)开发人员都会欣赏这一点。

希望对您有所帮助!-迈克

关于http-status-codes - 对非 HTTP 错误使用 HTTP 状态代码是否合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27979773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com