【问题标题】:Which is better? 403 status code or 422 status code with payload for failed validation and authentication?哪个更好? 403 状态码或 422 状态码与有效负载验证和身份验证失败?
【发布时间】:2016-04-05 20:25:51
【问题描述】:

POST /api/teams

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

规则:

  1. 姓名为必填项
  2. leagueId 是必需的
  3. 经过身份验证的用户应该是所创建球队将关联到的联赛的所有者。

假设经过身份验证的用户由于不是所有者而无法访问leagueId,返回403响应是否更好(注意名称字段的规则也不满足)? 或者最好返回 422 状态码和这个有效载荷:

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

【问题讨论】:

    标签: validation rest authentication


    【解决方案1】:

    当一个必填字段不存在时,我会返回一个400 bad request,因为请求不满足隐式合同。

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

    【讨论】:

    • 我认为当必填字段不存在时,状态码 422 更合适。
    猜你喜欢
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2018-12-31
    • 2016-10-14
    • 2015-12-23
    • 2021-11-06
    • 2022-07-23
    • 2017-07-28
    相关资源
    最近更新 更多