Validation 哪个更好?403状态代码或422状态代码,有效负载用于验证和身份验证失败?
Validation 哪个更好?403状态代码或422状态代码,有效负载用于验证和身份验证失败?,validation,rest,authentication,Validation,Rest,Authentication,POST/api/teams { "name": "", "leagueId": 1 } 规则: 名称是必需的 需要联盟ID 经过身份验证的用户应该是创建的团队将关联到的联盟的所有者 假设经过身份验证的用户没有访问leagueId的权限,因为该用户不是所有者,是否最好返回403响应(请注意,名称字段的规则也不满足)? 或者最好返回422状态代码和此有效负载: { "errors": [ { "field": "name",
POST/api/teams
{
"name": "",
"leagueId": 1
}
规则:
{
"errors": [
{
"field": "name",
"message": "Name is required."
},
{
"field": "leagueId",
"message": "User is not the owner of the league."
}
],
"message": "Validation Failed"
}
如果由于请求不满足隐式约定,因此不存在必填字段,我将返回一个
400错误请求
如果经过身份验证的用户不是联盟的所有者,我将返回403禁止
,因为这表明由于用户是谁,所以不允许用户这样做。我认为当不存在必填字段时,状态代码422更合适。