我目前处于构建RESTful API的早期阶段,并且已经以正确的方式来回处理业务规则验证。
我正在使用Web API 2并且当前使用IValidatableObject
来处理验证模型。例如,如果缺少必填字段,我将返回" 400 Bad Request"和ModelState
。
我开始向IValidatableObject
Public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
方法添加业务规则验证,并继续返回&#34; 400 Bad Request&#34;带有描述未通过验证的业务规则的消息。然后我退后一步思考&#34;业务规则与模型验证不同,请求完全有效,我不应该返回400.&#34;
现在我计划将业务规则验证从模型验证转移到域逻辑中。这让我想到我不仅应该返回正确的状态代码,还应该返回客户端如何确定要显示的正确消息。
我在403 Forbidden和422 Unprocessable Entity之间徘徊,倾向于422.欢迎任何建议。
现在让我们说我发出的请求失败了多个业务规则,我返回了422和一组错误消息。我希望客户能够理解错误并向他们展示他们认为合适的消息,而不仅仅是在我的回复中显示消息。
是否可以返回422.x并记录每个.x,以便客户端知道该怎么做?这似乎让我有了每个请求只返回一个错误的限制。
我应该定义错误代码并返回错误消息吗?例如:
{
"Errors": [
{ "Error": { "Code": "E0001", "Message": "You failed business rule 1" } },
{ "Error": { "Code": "E0002", "Message": "You failed business rule 2" } }
]
}
任何反馈都会很棒!谢谢!
答案 0 :(得分:1)