哪个更好? 403状态代码或422状态代码,带有有效负载,用于验证和身份验证失败?

时间:2016-01-01 04:54:33

标签: validation rest authentication

POST /api/teams

{
    "name": "",
    "leagueId": 1
}

规则:

  1. 名称是必需的
  2. leagueId是必需的
  3. 经过身份验证的用户应该是创建的团队所关联的联盟的所有者。
  4. 让我们说经过身份验证的用户无法访问leagueId,因为用户不是所有者,最好返回403响应(请注意,名称字段的规则也不是满意)? 或者最好返回422状态代码和此有效负载:

    {
        "errors": [
            {
                "field": "name",
                "message": "Name is required."
            },
            {
                "field": "leagueId",
                "message": "User is not the owner of the league."
            }
        ],
        "message": "Validation Failed"
    }
    

1 个答案:

答案 0 :(得分:3)

当请求不满足隐式契约时,如果不存在必填字段,我会返回400 bad request

如果经过身份验证的用户不是联盟的所有者,我会返回403 Forbidden,因为它表明用户不允许这样做是因为他/她是谁。