.net 我应该为业务逻辑错误响应HTTP 5xx还是4xx?

.net 我应该为业务逻辑错误响应HTTP 5xx还是4xx?,.net,rest,http,asp.net-web-api,.net,Rest,Http,Asp.net Web Api,如果我需要对我的业务逻辑进行一些验证,您会建议我使用什么状态代码 (例如)我必须验证用户名是否以前注册过 我会使用 400错误请求 或 409冲突 但是我不确定这是否是最好的选择。根据HTTP规范:在出现“内部服务器错误”的情况下,应该使用5xx系列响应代码,也就是说,Web服务器中发生了一些不好的事情,这是开发人员(或系统管理员)的错误而不是Web服务的最终用户 4xx表示“发送到服务器的数据有问题”,例如404表示客户端请求的不存在的资源,400表示一般的“错误请求”(例如,XML请求缺少所

如果我需要对我的业务逻辑进行一些验证,您会建议我使用什么状态代码

(例如)我必须验证用户名是否以前注册过

我会使用

400错误请求

409冲突


但是我不确定这是否是最好的选择。

根据HTTP规范:在出现“内部服务器错误”的情况下,应该使用
5xx
系列响应代码,也就是说,Web服务器中发生了一些不好的事情,这是开发人员(或系统管理员)的错误而不是Web服务的最终用户

4xx
表示“发送到服务器的数据有问题”,例如
404
表示客户端请求的不存在的资源,
400
表示一般的“错误请求”(例如,XML请求缺少所需元素)

您为“用户名已注册”返回HTTP
409 Conflict
的示例似乎很好,但严格来说,仅当请求位于特定实体上时才应使用此示例。当请求路径没有唯一标识特定资源时,409响应将不合适