我正在开发一个音乐媒体库,允许用户共享他们库中的音乐,但前提是他们被标记为可共享。
在后端,我正在检查音乐文件是否可以像这样共享
if(file.shareable) share
else throw 500 or 400?
对我来说,这是一个 400 错误的请求,因为用户正在尝试做一些公司不允许的事情。
这是正确的方式吗?
我正在开发一个音乐媒体库,允许用户共享他们库中的音乐,但前提是他们被标记为可共享。
在后端,我正在检查音乐文件是否可以像这样共享
if(file.shareable) share
else throw 500 or 400?
对我来说,这是一个 400 错误的请求,因为用户正在尝试做一些公司不允许的事情。
这是正确的方式吗?
4xx 表示错误的请求——即“不要尝试重新请求”。 5xx 表示服务器有问题,即“给我们一分钟,稍后再试。”
因此,如果是业务逻辑,那将是 400 级错误,即不要重新请求。
,对于任何阻止服务器返回有用响应的客户端错误,您都应该使用 4xx 代码。这包括违反业务规则的请求。重点是向客户端表明请求无效,并可能包括客户端可以采取的解决问题的步骤。
如果服务器遇到阻止其工作的内部问题,请使用 5xx 代码。也许数据库或必要的外部服务已关闭,或者某处存在编程错误。也许服务器现在太忙了。除了稍后再试之外,客户无法解决此问题。
基本上:
4xx:你的错。
5xx:我的错。