【发布时间】:2019-03-10 17:12:48
【问题描述】:
将以下端点作为服务,根据其 id 返回用户信息
/getUser?id=1234
客户端或监控工具如何区分 id = 1234 不存在的用户和请求不存在页面的用户?
我对所有状态代码都有同样的问题,例如 500,我的基础架构团队告诉我,您报告了误导性信息,因为他们无法区分来自我的服务的 500 和来自服务器本身 IIS 的 500
【问题讨论】:
标签: iis asp.net-web-api apm
将以下端点作为服务,根据其 id 返回用户信息
/getUser?id=1234
客户端或监控工具如何区分 id = 1234 不存在的用户和请求不存在页面的用户?
我对所有状态代码都有同样的问题,例如 500,我的基础架构团队告诉我,您报告了误导性信息,因为他们无法区分来自我的服务的 500 和来自服务器本身 IIS 的 500
【问题讨论】:
标签: iis asp.net-web-api apm
这是一个很好的问题。
大多数教程会很高兴地告诉您返回 NotFound,即 404。我猜这些人从来不需要构建和支持生产级 API。
您需要有一些约定并遵守它们。我更喜欢返回 204 而不是 404。204 表示调用成功但没有内容。这样,您将在 data 不存在 和 endpoint 不存在 之间有明显的区别。
至于 500,您的 API 永远不应该返回 500,除非发生了非常糟糕且无法恢复的事情,服务器端。我建议不要愉快地为所有事情抛出异常。如果您的业务规则不满足,那没有理由抛出任何东西。如果您的 API 无法访问您的数据库,则需要 500 才能表明发生了非常糟糕的事情。至于你报告的 500 问题,我不同意。 IIS 有自己的日志,您的服务将有自己的日志,所以是的,您的基础架构团队可以区分。
【讨论】: