gpt4 book ai didi

java - 对于此 REST 端点,404 或 401 合适的响应是什么

转载 作者:行者123 更新时间:2023-12-01 07:02:23 24 4
gpt4 key购买 nike

例如,我有一个端点来获取用户。如果找不到用户,则会出现 404。如果我要求该用户提供一些数据,但该数据不存在,则返回 204。

如果我请求某个用户的一些数据,但该用户不存在。在这种情况下是 404 还是 401?

在我看来,这是一个 404。但是考虑以下场景......

有一个 REST 客户端正在向 REST 服务器发出请求。 REST服务器(使用spring security)首先尝试加载用户,但加载失败,因为系统中不存在该用户。因为 spring security 看到 UserNameNotFound 异常,所以它抛出 401。这似乎也是正确的。

最佳答案

当客户端请求不存在的资源时使用404:

6.5.4. 404 Not Found

The 404 (Not Found) status code indicates that the origin serverdid not find a current representation for the target resource or isnot willing to disclose that one exists. A 404 status code doesnot indicate whether this lack of representation is temporary or
permanent; the 410 (Gone) status code is preferred over 404 if the
origin server knows, presumably through some configurable means, thatthe condition is likely to be permanent. [...]

如果您使用HTTP authentication ,当客户端请求资源且凭据无效(身份验证问题)时使用 401:

3.1. 401 Unauthorized

The 401 (Unauthorized) status code indicates that the request hasnot been applied because it lacks valid authentication credentialsfor the target resource. The server generating a 401 response MUSTsend a WWW-Authenticate header field containing atleast one challenge applicable to the target resource. [...]

有关更多详细信息,请查看RFC 7231 ,HTTP/1.1 协议(protocol)的语义和内容的当前引用。另请查看以下decision chart来自拉克斯堡:


状态代码大致分为三个类别:

HTTP status codes categories


从这里开始:

HTTP status codes


选择2xx3xx状态代码:

HTTP 2xx and 3xx status codes


选择 4xx 状态代码:

HTTP 4xx status codes


选择5xx状态代码:

HTTP 5xx status codes

关于java - 对于此 REST 端点,404 或 401 合适的响应是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39648041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com