使 API 抛出 HTTP 错误或 return 空对象

Making an API throw HTTP errors or return empty objects

将 JSON-API return 纯 HTTP 错误代码或空 arrays/objects 作为 JSON 到前端更优雅吗?
示例:
1. 前端合法地请求用户配置文件。
2. 自定义权限系统实现确定该用户无权访问配置文件和 returns 403(后端)。
3. 前端在各个地方使用 try/catch-like 语法来解释错误代码。

使用的框架是ASP.NET核心和Angular(指定上下文)。

答案取决于错误和状态代码。通常,您不应该 return 空数组或空对象之类的东西,除非这确实是结果。例如,如果有人请求 Foo 的列表,而字面意思是 none,那么 return 一个空数组是合适的。不过,那将是成功的 200。

对于像 403 这样的东西,你应该 return 没有正文,或者如果你有 return 正文,它应该是一个错误对象,例如 problem details 响应 -不为空。

403 有点特殊,因为状态代码本身通常具有足够的描述性,甚至可能没有额外的信息要添加。换句话说,客户端是被禁止的;这通常并不重要为什么,而且通常没有办法更正它,假设他们已经通过身份验证。如果没有真正的恢复方法或者导致结果的原因不重要或明显,那么您可以 return 根本没有响应正文。在所有其他情况下,您应该 return “something”,即使它只是一个简单的字符串消息,以帮助客户了解发生了什么。

Empty arrays/objects 应该在实际结果为空 array/object 时保留,仅此而已。