我们有POST API,可以响应特定用户的联系方式。但由于这是机密数据,要访问此详细信息,访问它的任何人都需要提供经过验证的手机号码。
请求如下:
POST /api/userdetails
{
"userid": 123,
"mobile": "+1394839843"
}
如果“移动”号码不是我们数据库中经过验证的号码,那么状态代码应该是什么?
答案 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