哪个更好?当验证和身份验证失败时,403状态码或带有效荷载的422状态码哪个更好?

3

POST /api/teams

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

规则:

  1. 名称字段为必填项
  2. 联赛编号字段为必填项
  3. 只有联赛的所有者才能创建关联到该联赛的团队。

假设认证用户因不是联赛的所有者而无法访问联赛编号,那么是返回403响应更好(注意名称字段的规则也未满足)? 还是返回422状态码和此有效负载更好:

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

4

当请求未满足隐式合同时,如果必填字段未出现,我会返回400 Bad Request

如果经过身份验证的用户不是联盟的所有者,则我会返回403 Forbidden,因为它表示该用户由于其身份而无权执行此操作。


我认为当必填字段未填写时,状态码422更加合适。 - John Kenn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接