rails api中阻止的用户配置文件的最佳HTTP状态代码是什么?

时间:2016-12-26 14:37:55

标签: ruby-on-rails api http

我在Rails中为社交应用编写了一个API。这个应用程序喜欢Facebook,用户可以阻止其他用户。如果用户A阻止用户B,则用户B无法查看用户A的个人资料页面。那么我应该返回的最佳HTTP代码状态是什么:404,403,204或200(什么都不渲染)?

2 个答案:

答案 0 :(得分:5)

我更喜欢使用403 Forbidden

  

403(禁止)状态代码表示服务器理解请求但拒绝授权。希望公开请求被禁止的服务器可以在响应有效负载中描述该原因(如果有的话)。

     

如果请求中提供了身份验证凭据,则服务器认为它们不足以授予访问权限。客户端不应该使用相同的凭据自动重复请求。客户端可以使用新的或不同的凭据重复请求。但是,出于与凭证无关的原因,可能会禁止请求。

     

希望“隐藏”当前存在的禁止目标资源的原始服务器可以使用状态代码404(未找到)进行响应。

https://tools.ietf.org/html/rfc7231#section-6.5.3

答案 1 :(得分:0)

最佳做法是403,但这样做会暴露用户被阻止的事实。如果您不想这样,可以返回404。作为一个例子,Github对未经授权的私有回购访问总是返回404