为了简化,假设您有一个restapi,前端有一个登录表单,您想检查用户是否存在。前端http/将一些数据发布到后端,后端查询数据库。结果是用户不存在,您希望将该结果返回到前端。
我知道有很多方法可以返回结果,但是有没有什么“标准”或“更正确的方法”可以将“user does not exist”结果返回为json?我在想一些可能性:
将json作为字符串返回结果?
返回空对象?
返回布尔值doesnotexist=false的空用户对象?
返回404找不到或某个http代码响应?
4和1的混合?
2条答案
按热度按时间nue99wik1#
处理找不到资源的情况的标准方法是返回404错误状态。例如,如果您的uri类似于
/user/{id}
然后,这是一种使用给定id访问user类型的资源/文档的尝试,在这种情况下,如果找不到该用户,那么404将是完全合适的。在这种情况下,不需要专门返回json响应。但是,您应该知道,出于安全目的,以这种方式验证用户的存在是不安全的。如果攻击者知道一个有效的用户名或id,他们可以尝试强行输入密码。很多系统都会对无效的用户标识符和无效的密码(无效的凭据)返回相同的错误,因此攻击者无法知道是否正确猜到了用户名。在尝试验证用户身份时,401错误通常被认为是有用的响应。如果用户不存在或给定的凭据无效,则应返回401。
t3irkdon2#
没有标准的方法,大多数时候http状态码就足够了。如果您想到一个更详细的自定义消息,那么创建一个包含错误代码、详细信息甚至异常类别的pojo并将其返回到ui。