我正在设计一个POST Restful API,其中我有这样一种情况,需要根据请求体中提供的元素之一对用户进行授权。
{
division : "1",
name : "MyName",
address:{
no : 123,
street : "abc",
pincode : 222111
}
....
}
因此,发出POST请求的用户应该被授权在第一部门工作。如果没有获取到请求正文,我无法对用户进行授权。
另外,为了验证某些属性,我不得不在数据库中进行大量的DB调用,例如,检查上述地址是否具有有效的邮政编码值。
因此,我的问题是如何向用户返回错误代码:
- [编辑]如果请求中提供的部门无效(即系统中不存在)- 400或403?
- 如果提供了部门,但未经授权且邮政编码无效的用户- 400表示无效的邮政编码或403?
- 如果邮政编码是必需的属性并且在请求中未提供,应该使用什么错误代码。我应该先检查403,然后再检查400还是相反?
基本上是哪个错误代码要先处理另一个错误代码?
还有,像这样做可以吗:
400 – request is bad, syntactically (division/pincode or other mandatory values not provided)
403 – authorize user
400 – request is bad, data specific validation (heavier operation, requiring to hit DB)
[编辑] 我们更喜欢不使用422错误代码。