唯一资源的 REST 资源命名
REST resource naming for an unique resource
我有一个资源,基本上是当前(经过身份验证的)用户可访问的所有内容的集合。我们称它为 Workspace
.
鉴于每个用户始终只有一个 Workspace
:
我应该应用 "plural" 约定吗?如果是,我是否应该创建一个假的子资源来表示它是唯一的?
换句话说,我应该使用:
/workspace
-> 当前用户工作区
或者
/workspaces/~
-> 当前用户工作区
/workspaces
-> 404
从用户的角度来看,拥有一个独特的 /workspace
资源是有意义的。
然而,从系统的角度来看,有很多工作区,但每个用户只有一个,所以 /workspaces/~
看起来更合乎逻辑。
这里没有任何硬性规定。我会说使用对您的最终用户有意义的任何东西,并且最好与您在其他地方所做的一致。
例如,根据您网站的运作方式,我会想到一些其他地址。如果工作区与用户相关联,那么将它放在 /users/{id}/workspaces
地址下可能是有意义的。也许这对您的情况没有意义。因此,在您提供的选项中,我会说如果客户很明显应该有多个工作区但他们只能访问一个,那么 /workspaces/{id}
地址将适合该模型。如果他们认为工作区是一个独特的实体,那么使用复数地址可能会造成混淆。
在我自己的设计中,我倾向于错误地使用复数形式。
我有一个资源,基本上是当前(经过身份验证的)用户可访问的所有内容的集合。我们称它为 Workspace
.
鉴于每个用户始终只有一个 Workspace
:
我应该应用 "plural" 约定吗?如果是,我是否应该创建一个假的子资源来表示它是唯一的?
换句话说,我应该使用:
/workspace
-> 当前用户工作区
或者
/workspaces/~
-> 当前用户工作区/workspaces
-> 404
从用户的角度来看,拥有一个独特的 /workspace
资源是有意义的。
然而,从系统的角度来看,有很多工作区,但每个用户只有一个,所以 /workspaces/~
看起来更合乎逻辑。
这里没有任何硬性规定。我会说使用对您的最终用户有意义的任何东西,并且最好与您在其他地方所做的一致。
例如,根据您网站的运作方式,我会想到一些其他地址。如果工作区与用户相关联,那么将它放在 /users/{id}/workspaces
地址下可能是有意义的。也许这对您的情况没有意义。因此,在您提供的选项中,我会说如果客户很明显应该有多个工作区但他们只能访问一个,那么 /workspaces/{id}
地址将适合该模型。如果他们认为工作区是一个独特的实体,那么使用复数地址可能会造成混淆。
在我自己的设计中,我倾向于错误地使用复数形式。