我想知道什么时候在REST中使用单数名称被认为是正确的(我的意思是,使用最佳实践),但更特别是当两个实体之间存在一对一映射时。
第一个例子,我们必须管理客户的忠诚度。客户可以使用/me
访问他的个人资料。此外,他还有一个忠诚度帐户,可以显示有关忠诚度积分,折扣,解锁特定状态的下一个阈值的若干信息。你会设计如下的路径:
/me/fidelity_account
,/me/fidelity_accounts/mine
- 我的最爱,/me/my_fidelity_account
,/me/my_fidelity_accounts/mine
,/me/fidelity_accounts/{id}
,假设给出错误的id给出403,第二个例子,我们必须为客户管理购物清单。客户可能有多个列表,但必须至少始终有一个名为“Internet Shopping List”的列表。此列表是唯一的,其他列表中有自己的ID。互联网购物清单具有完全不同的架构。
我们对这个用例有几个想法:
/me/shopping_lists/{id}
,但/me/internet_shopping_list
(单数)用于特定列表。这是我最好的选择。/me/shopping_lists/{id}
,但/me/shopping_lists/internet_shopping_list
用于特定列表。我一直在思考这个问题,一些答案比其他答案更好。假设用户提供了一个令牌来识别自己: - /me/fidelity_accounts/mine
- mine
这里将是id的别名。 - /me/fidelity_accounts/{id}
- 因此,{id}
只有在帐户的ID与用户提供的令牌相关时才能工作。 - /me/fidelity_account
- 这不是很安静,但这是最简单的方式