2012-07-31 69 views
3

假设我有以下实体:project,company,director。RESTful URI设计 - 为资源提供多个URI用户友好

以下关系适用:

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

我想像了这样的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 

难道例如为:

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相同的资源,?以上URI设计的优缺点是什么?

回答

0

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

如果不是,我宁愿选择第二种形式的网址。你们所有三种资源类型彼此相邻,没有隐含的树结构。在资源表示中,您将使用链接从项目导航到公司导演。

+0

不,公司可以管理好几个项目,所以你的“扁平”URI解决方案似乎更好。支持“GET/projects/{1}/company”来减少GET的数量会不会很好? – Parnas 2012-08-01 07:45:24