16

我正在为我的计算机科学论文构建动态拼车应用程序的 RESTful 协议。

在协议中,我还必须正式指定每个操作的 HTTP 状态代码。我有这个“隐私相关”的问题。假设如下:

GET /api/persons/angela/location

检索用户“angela”的当前位置。很明显,不是每个人都应该能够获得结果。只有安吉拉本人和可能会选择她的司机应该能够知道。

我无法决定是在此处返回 404 Not Found 还是 401 Forbidden。

有什么提示吗?什么是最好的,为什么?

4

4 回答 4

35

根据Wikipedia(和RFC 2616),当页面存在但需要身份验证时使用 401 代码;403 用于身份验证不会改变任何内容的页面。(在野外,403 通常意味着某些事情的权限是错误的,而 401 会提示用户输入用户名/密码)。404 用于文档根本不存在的地方。

在您的情况下,似乎 401 是最合适的代码,因为有一些方法可以验证有权访问该页面的用户。

于 2010-08-23T12:30:22.123 回答
5

绝对不是 404。404 只是未找到。
401 是访问被拒绝。
403被禁止。

我会选择401

于 2010-08-23T12:33:03.390 回答
3

如果请求中提供了授权凭据,并且请求者无权访问此资源,则应返回 403。

如果请求中未提供授权凭据,则应返回 401。

于 2010-08-23T12:51:53.803 回答
2

对我来说,我将使用 400 Bad request。
因为我的应用程序不会以编程方式进入不可访问的资源。
在我看来,过滤用户权限并隐藏不可访问的资源是很好的用户体验。如果我的服务器收到无法访问的请求,这意味着有人试图做某事。
这就是为什么我在我的应用程序中选择 400 - Bad request。

于 2016-09-11T02:24:05.123 回答