【发布时间】:2016-05-13 21:46:12
【问题描述】:
在 JSON-REST 服务架构中(在 these patterns 之后的方法和响应代码)我们经常需要生成故意的 404 响应 - 例如,如果 GET /users/123 被路由到控制器,然后无法找到一个 ID 为 123 的用户实体,我们返回一个 404 响应,在许多情况下将包含带有错误消息/代码/等的 JSON 有效负载。
现在,当我们为特定 API 提供客户端时,我们希望客户端在不同条件下表现不同。例如,如果我们将客户端指向错误的主机,我们可能会从该主机获得 404 未找到 - 而如果我们确实访问了服务,我们可能会因为无效的用户 ID 而获得 404。
在这种情况下,就客户端而言,“未找到 404 用户 ID”不是错误 - 与任何其他“未找到 404”相反,这会导致客户端抛出异常。
我的问题是,你如何区分这些 404 错误?
仅基于响应?
通过添加标头来指示有效响应?
还是其他方式?
【问题讨论】:
-
GET /users/123是任何客户端的允许操作吗?还是只有 user123 可以查看,等等?因为如果由于任何类型的安全问题,“403 Forbidden”可能更准确(和 RESTful)。 -
是的,如果服务请求被拒绝,我们会发出 403 代码 - 这些代码不容易被误认为是其他任何东西。但在 404 的情况下,可能有多种原因,例如访问错误的服务器、服务已关闭、服务未正确路由请求等 - 所以客户端需要一些方法来区分“成功” " 404,客户端可能会从实际错误中返回
null,客户端可能会为此引发异常。
标签: json api rest http microservices