angular—当请求的结果为空/未找到时,作为json响应到前端的最佳方式

4zcjmb1e  于 2021-07-23  发布在  Java
关注(0)|答案(2)|浏览(253)

为了简化,假设您有一个restapi,前端有一个登录表单,您想检查用户是否存在。前端http/将一些数据发布到后端,后端查询数据库。结果是用户不存在,您希望将该结果返回到前端。
我知道有很多方法可以返回结果,但是有没有什么“标准”或“更正确的方法”可以将“user does not exist”结果返回为json?我在想一些可能性:
将json作为字符串返回结果?
返回空对象?
返回布尔值doesnotexist=false的空用户对象?
返回404找不到或某个http代码响应?
4和1的混合?

nue99wik

nue99wik1#

处理找不到资源的情况的标准方法是返回404错误状态。例如,如果您的uri类似于 /user/{id} 然后,这是一种使用给定id访问user类型的资源/文档的尝试,在这种情况下,如果找不到该用户,那么404将是完全合适的。在这种情况下,不需要专门返回json响应。
但是,您应该知道,出于安全目的,以这种方式验证用户的存在是不安全的。如果攻击者知道一个有效的用户名或id,他们可以尝试强行输入密码。很多系统都会对无效的用户标识符和无效的密码(无效的凭据)返回相同的错误,因此攻击者无法知道是否正确猜到了用户名。在尝试验证用户身份时,401错误通常被认为是有用的响应。如果用户不存在或给定的凭据无效,则应返回401。

t3irkdon

t3irkdon2#

没有标准的方法,大多数时候http状态码就足够了。如果您想到一个更详细的自定义消息,那么创建一个包含错误代码、详细信息甚至异常类别的pojo并将其返回到ui。

相关问题