现在,我开始使用expressjs开发我的web apis。 我正在考虑哪个是链接两个资源的好方法(数据库中已存在两个资源)。
例如,我有两个实体:company
和user
。
company
&之间的关系user
是一对多的。
因此,用户实体应包含company_id。 有一些方法可以将用户链接到公司。
案例1:
PUT /users/{user_id}
Request:
{
"company_id": "abc"
}
案例2:
PUT /company/{company_id}/users/{user_id}
我更喜欢案例1,因为将来当关系增长时,例如deparment
& user
,我不需要扩展我的网址来支持这些案例。但我不知道它是否遵循了设计一个宁静的api的最佳实践。
答案 0 :(得分:2)
要么是可以接受的。我更喜欢前者,因为它赋予了灵活性。在案例2中,如果您想要找到姓氏为“Smith”的所有用户,无论他们属于哪个公司,那么您就不幸了。
答案 1 :(得分:1)
在任何情况下我都不会推荐后一种选择。 您可以查看HTTP RFC和一些好的文章,如:
一般的想法是资源由其URL唯一标识(对它来说是例外,比如版本控制,但暂时不要关注它)以及当您使用其URL {{1将PUT应用于资源时您应该对此特定资源执行操作。通过寻址正在更改另一个资源的资源,它不直观且透明。