我在Rails中为社交应用编写了一个API。这个应用程序喜欢Facebook,用户可以阻止其他用户。如果用户A阻止用户B,则用户B无法查看用户A的个人资料页面。那么我应该返回的最佳HTTP代码状态是什么:404,403,204或200(什么都不渲染)?
答案 0 :(得分:5)
我更喜欢使用403 Forbidden
403(禁止)状态代码表示服务器理解请求但拒绝授权。希望公开请求被禁止的服务器可以在响应有效负载中描述该原因(如果有的话)。
如果请求中提供了身份验证凭据,则服务器认为它们不足以授予访问权限。客户端不应该使用相同的凭据自动重复请求。客户端可以使用新的或不同的凭据重复请求。但是,出于与凭证无关的原因,可能会禁止请求。
希望“隐藏”当前存在的禁止目标资源的原始服务器可以使用状态代码404(未找到)进行响应。
答案 1 :(得分:0)
最佳做法是403
,但这样做会暴露用户被阻止的事实。如果您不想这样,可以返回404
。作为一个例子,Github对未经授权的私有回购访问总是返回404
。