哪个是在rest apis中链接两个资源的好方法

时间:2016-04-25 15:26:54

标签: api-design

现在,我开始使用expressjs开发我的web apis。 我正在考虑哪个是链接两个资源的好方法(数据库中已存在两个资源)。

例如,我有两个实体:companyusercompany&之间的关系user是一对多的。

因此,用户实体应包含company_id。 有一些方法可以将用户链接到公司。

案例1:

PUT /users/{user_id}

Request: 
{
  "company_id": "abc"
}

案例2:

PUT /company/{company_id}/users/{user_id}

我更喜欢案例1,因为将来当关系增长时,例如deparment& user,我不需要扩展我的网址来支持这些案例。但我不知道它是否遵循了设计一个宁静的api的最佳实践。

2 个答案:

答案 0 :(得分:2)

要么是可以接受的。我更喜欢前者,因为它赋予了灵活性。在案例2中,如果您想要找到姓氏为“Smith”的所有用户,无论他们属于哪个公司,那么您就不幸了。

答案 1 :(得分:1)

在任何情况下我都不会推荐后一种选择。 您可以查看HTTP RFC和一些好的文章,如:

一般的想法是资源由其URL唯一标识(对它来说是例外,比如版本控制,但暂时不要关注它)以及当您使用其URL {{1将PUT应用于资源时您应该对此特定资源执行操作。通过寻址正在更改另一个资源的资源,它不直观且透明。