RESTful URI设计 - 用户友好的资源的多个URI

时间:2012-07-31 11:23:06

标签: rest restful-architecture

假设我有以下实体:项目,公司,董事。

以下关系适用:

  • 项目有一家公司
  • 公司有一名董事
  • 董事可以是多家公司的董事
  • 公司可以管理多个项目

我想象过这样的URI设计:

 GET  /projects
 GET  /projects/{id}
 GET  /projects/{id}/company
 GET  /projects/{id}/company/director
 PUT  /projects/{id}/company           # makes new/overwrite company
 POST /projects/{id}/company           # updates company
 PUT  /projects/{id}/company/director  # makes new/overwrite director
 POST /projects/{id}/company/director  # updates director

为相同的资源提供多个URI是否可以/用户友好,例如:

 POST /companies                       # makes a new company
 POST /companies/{id}                  # updates company
 GET  /companies/{id}
 POST /directors                       # makes a new director
 POST /directors/{id}                  # updates director
 GET  /directors/{id}

根据最佳做法,这是一个很好的URI设计吗?上面的URI设计的优点和缺点是什么?

1 个答案:

答案 0 :(得分:0)

第一种形式的URL意味着一种树结构,其中公司属于一个且只有一个项目,一个主管属于一个且只有一个公司。是这种情况吗?

如果不是,我更喜欢第二种形式的网址。您拥有彼此相邻的所有三种资源类型,没有隐含的树结构。在资源表示中,您可以使用链接从项目导航到公司导演。