Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 哪个更好?403状态代码或422状态代码,有效负载用于验证和身份验证失败?_Validation_Rest_Authentication - Fatal编程技术网

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
}
规则:

  • 名称是必需的
  • 需要联盟ID
  • 经过身份验证的用户应该是创建的团队将关联到的联盟的所有者
  • 假设经过身份验证的用户没有访问leagueId的权限,因为该用户不是所有者,是否最好返回403响应(请注意,名称字段的规则也不满足)? 或者最好返回422状态代码和此有效负载:

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

    如果由于请求不满足隐式约定,因此不存在必填字段,我将返回一个
    400错误请求


    如果经过身份验证的用户不是联盟的所有者,我将返回
    403禁止
    ,因为这表明由于用户是谁,所以不允许用户这样做。

    我认为当不存在必填字段时,状态代码422更合适。