REST HTTP响应状态代码表示客户端输入未经验证?

时间:2017-08-31 17:40:21

标签: rest http http-status-codes

我们有POST API,可以响应特定用户的联系方式。但由于这是机密数据,要访问此详细信息,访问它的任何人都需要提供经过验证的手机号码。

请求如下:

POST /api/userdetails
{
   "userid": 123,
   "mobile": "+1394839843"
}

如果“移动”号码不是我们数据库中经过验证的号码,那么状态代码应该是什么?

1 个答案:

答案 0 :(得分:1)

  

如果“移动”号码不是我们数据库中经过验证的号码,那么状态代码应该是什么?

从很高的层面来看:如果用户提交的表格中包含“未经验证的号码”并且这样做,那么请考虑一下普通旧网站的用途。

Michael Kropat的Stop Making It Hard中的图表将这一过程分解为更具体的问题。

请求有问题吗?这显然是肯定的,所以我们立即知道您将要使用4xx类中的一些代码。

从那里,只需要查看semantics of each code并查看哪一个最合适。

400 Bad Request是通用客户端错误,因此如果找不到更好的匹配,请使用该错误。

403 Forbidden大致是“我理解你的要求,但拒绝采取行动。”这通常与身份验证和ACL相关联,但标准实际上并不需要这样做。鉴于你的描述,这不是一个糟糕的比赛。

来自WebDav的

422 Unprocessable Entity是另一种可能性。我拒绝它,理由是消息体的 schema 完全正确,问题是指定的值与服务器的当前状态不对齐。您可能想要查看之前的discussion about 400 vs 422