不列出项目的REST URL

时间:2014-09-23 17:00:35

标签: rest

是否可以在REST API中使用GET /users/:user_id之类的URL,即使不可能列出使用GET /users的用户?

如果“是”,GET /users应该返回404还是空列表?

2 个答案:

答案 0 :(得分:1)

由于REST没有明确定义的标准,您可以做任何您想做的事情,只需相应地记录它并在整个项目中遵循相同的标准。

可能403是一个更好的选择,因为有用户,但你被禁止列出

答案 1 :(得分:1)

REST具有明确定义的约束。您可以在Fielding dissertation

中了解相关信息

对于如何设计URI结构没有任何限制,因为客户端必须与它完全分离。所以这不是REST问题。

简而言之,您可以使用不错的URI并使用自定义约定来构建它们。你必须要注意一些事情:

  • 单个URI只能识别单个资源(但单个资源可以有多个不同的URI) - 统一接口约束/识别资源
  • URI路径是分层的,查询是非分层的 - URI标准(它可以是主观的,是分层的,什么不是)
  • 查询是URI的一部分(但您可以拥有自己的路由约定,例如路径可以标识资源,查询可以描述表示详细信息)
  • URI被映射到资源而不是操作(如SOAP),因此如果人类可读的URI包含动词,则URI映射可能存在缺陷
  

如果“是”,GET /用户应该返回404还是空列表?

如果您不想向某人显示用户列表,则不要在指向用户列表的响应中放置链接。如果他们手动调用URI,那么您可以发送404未找到或403禁止,也许401未经授权。顺便说一句。如果我是你,我会显示一个仅包含当前用户的用户列表。