首页 > 解决方案 > 我应该为业务逻辑失败抛出 400 或 500 服务错误吗?

问题描述

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

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

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

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

这是正确的方法吗?

标签: rest

解决方案


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

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


推荐阅读