2012-07-31 54 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