2016-12-05 80 views
1

我想爲幾個用戶類型組織REST API,但我不明白資源應該如何投入彼此。例如,管理員可以使用員工列表進行操作(創建,編輯和刪除項目)。此外,管理員可以操作每個員工的工作場所清單。我認爲,API路線應如:RESTful概念:組織分級資源

GET: /employees 
GET: /employees/{id} 
POST: /employees 
PUT: /employees/{id} 
DELETE: /employees/{id} 

GET: /employees/{id}/workplaces 
GET: /employees/{id}/workplaces/{id} 
POST: /employees/{id}/workplaces 
PUT: /employees/{id}/workplaces/{id} 
DELETE: /employees/{id}/workplaces/{id} 

我知道如果與id資源不存在,那麼我應該返回404: Not found,但對於GET: /employees/{id}/workplaces/{id}?當id不存在的員工或工作場所時,我是否應該返回404: Not found?或者也許存在這個任務的其他解決方案?

另一個問題是具有不同權限的用戶對資源有不同的訪問權限。例如,部門主管可以得到他所在部門的員工名單,但不能得到其他部門的名單。我提出以下API路徑:

GET: /departments/my/employees 
GET: /departments/my/employees/{id} 

正如你可以在上面看到,我提出以取代id上的關鍵詞my,這將意味着該部門的id必須從授權令牌服用。其他擁有更多權限並可以列出部門的用戶可以這樣做:

GET: /departments/{id}/employees 
GET: /departments/{id}/employees/{id} 

這是構建REST服務的真實方法嗎?

回答

1

GET: /employees/{id}/workplaces/{id}?我應該回在這兩種情況下404: Not found當員工或工作場所使用該ID不存在?

是的。

GET: /departments/my/employees

如果你的代碼可以區分真正的ID my,這是從一個靜止點罰款。