首页 > 解决方案 > 使 API 抛出 HTTP 错误或返回空对象

问题描述

让 JSON-API 将纯 HTTP 错误代码或空数组/对象作为 JSON 返回到前端是否更优雅?
示例:
1. 前端合法地请求用户配置文件。
2. 自定义权限系统实现确定不允许该用户访问配置文件并返回403(后端)。
3. 前端在很多地方都使用了类似 try/catch 的语法来解释错误代码。

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

标签: jsonhttpasp.net-coreangular7

解决方案


答案取决于错误和状态代码。一般来说,你不应该返回空数组或空对象之类的东西,除非那是字面上的结果。例如,如果有人请求一个Foos 的列表,但实际上没有,那么返回一个空数组是合适的。不过,那将是成功的 200 次。

对于 403 之类的内容,您应该不返回任何正文,或者如果您确实返回了正文,则它应该是一个错误对象,例如问题详细信息响应 - 不是空的。

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

当实际结果是空数组/对象时,应该保留空数组/对象,仅此而已。


推荐阅读