我应该为业务逻辑失败抛出 400 还是 500 服务错误?

我正在开发一个音乐媒体库,允许用户共享他们库中的音乐,但前提是他们被标记为可共享。

在后端,我正在检查音乐文件是否可以像这样共享

if(file.shareable) share
else throw 500 or 400?

对我来说,这是一个 400 错误的请求,因为用户正在尝试做一些公司不允许的事情。

这是正确的方式吗?

blackless 回答:我应该为业务逻辑失败抛出 400 还是 500 服务错误?

4xx 表示错误的请求——即“不要尝试重新请求”。 5xx 表示服务器有问题,即“给我们一分钟,稍后再试。”

因此,如果是业务逻辑,那将是 400 级错误,即不要重新请求。

,

对于任何阻止服务器返回有用响应的客户端错误,您都应该使用 4xx 代码。这包括违反业务规则的请求。重点是向客户端表明请求无效,并可能包括客户端可以采取的解决问题的步骤。

如果服务器遇到阻止其工作的内部问题,请使用 5xx 代码。也许数据库或必要的外部服务已关闭,或者某处存在编程错误。也许服务器现在太忙了。除了稍后再试之外,客户无法解决此问题。

基本上:

4xx:你的错。

5xx:我的错。

本文链接:https://www.f2er.com/7529.html

大家都在问