我正在为我的计算机科学论文构建一个用于动态拼车应用程序的RESTful协议。
在协议中,我还必须正式指定每个操作的HTTP状态代码。我有这个“隐私相关”的问题。假设如下:
GET /api/persons/angela/location
检索用户“angela”的当前位置。 很明显,不是每个人都应该能够获得结果。只有安吉拉本身和一个可能会选择她的司机应该能够知道它。
我无法决定是否在此处返回404 Not Found或401 Forbidden。
任何提示?什么是最好的,为什么?
答案 0 :(得分:19)
根据Wikipedia(和RFC 2616),当页面存在但需要验证时使用401代码; 403用于认证不会改变任何内容的页面。 (在野外,403通常意味着对某些内容的权限是错误的,而401将提示用户输入用户名/密码)。 404用于文档根本不存在的地方。
在您的情况下,似乎401是最合适的代码,因为有一些方法可以验证可以访问该页面的用户。
答案 1 :(得分:0)
绝对不是404. 404就是找不到。
401被拒绝访问
403是被禁止的。
我会选择401
答案 2 :(得分:0)
对我来说,我会使用400 Bad请求 因为我的应用程序不会以编程方式获得无法访问的资源 在我看来,过滤用户权限和隐藏不可访问的资源是良好的用户体验。 如果我的服务器得到了无法访问的请求,这意味着有人试图做某事 这就是我在我的应用程序中选择400 - Bad请求的原因。
答案 3 :(得分:-1)
如果请求中提供了授权凭据,并且请求者没有访问此资源的权限,那么您应该返回403.
如果请求中未提供授权凭据,则应返回401。