在restful API中,当响应自定义错误消息时,正确的响应代码是什么?例如“用户名不存在”
一位同事争论应该是代码 400 而不是 200
如果出现错误消息,那么状态肯定不是 200。根据原因,它可能是 4xx 或 5xx。您可以选择以下一些可能的状态代码:https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
例如“用户名不存在”
正确答案是HTTP 404,找不到资源。
https://restfulapi.net/http-status-codes/
请注意,虽然您可以在正文中包含字符串响应,但这并不总是意味着您应该这样做。某些错误消息可能会泄露对恶意攻击者有用的数据。例如,假设您从名为“CustomIDP”的内部工具获得 JWT 断言,如果您做出以下响应。
CustomErrorException(status=401 UNAUTHORIZED, data="Missing the JWT token from CustomIDP, If you have issues call Jane Doe at ???-????-????)"
这显然是内部信息泄露,最好直接抛出 401 HTTP 响应。