我正在通過爲「問題跟蹤應用程序」創建RESTful服務來學習REST體系結構。現在你們許多人都知道ITA有用戶,項目,問題和評論。如何管理RESTful API中的關係?
的關係如下:
- 項目有問題,這些問題也受到了一定的用戶進行管理。
- 問題有評論,反過來也由某個用戶管理(讓我們發佈)
- 項目也由用戶管理。
我被困在決定構建路線。我在一個文本文件中寫了一些路線,我在這裏發佈。請看看並提出改進建議並找出錯誤。
Models:
- User
- Project
- Issue
- Comment
1. User
> Immediate Requirement
GET api/users/ /* Authenticate, and then return list of all users */
GET api/users/:id /* Authenticate, and return a particular user */
POST api/users/ /* Create a new user */
PUT api/users/:id /* Authenticate, and update a particular user */
> Add-on Requirement
GET api/users/:id/projects/ /* Authenticate, and return list of projects of particular user */
> Never Mind Requirement
DELETE api/users/ /* Authenticate, and delete all users */
DELETE api/users/:id /* Authenticate, and delete a particular user */
2. Project
> Immediate Requirement
GET api/projects/ /* Authenticate, and then return list of all projects */
GET api/projects/:id /* Authenticate, and return a particular project */
POST api/projects/ /* Authenticate, and create a new project */
PUT api/projects/:id /* Authenticate, and update a particular project */
> Add-on Requirement
GET api/projects/:id/issues /* Authenticate, and return a list of issues of particular project */
POST api/projects/:id/issues /* Authenticate, and create new issue for particular project */
DELETE api/projects/:id/issues /* Authenticate, and delete all issues of particular project */
> Never Mind Requirement
DELETE api/projects/ /* Authenticate, and delete all projects */
DELETE api/projects/:id /* Authenticate, and delete a particular project */
3. Issue
> Immediate Requirement
GET api/issues/ /* Authenticate, and then return list of all issues */
GET api/issues/:id /* Authenticate, and return a particular issue */
PUT api/issues/:id /* Authenticate, and update a particular issue */
> Add-on Requirement
GET api/issues/:id/comments /* Authenticate, and return a list of comments of particular issue */
POST api/issues/:id/comments /* Authenticate, and create a new comment for particular issue */
DELETE api/issues/:id/comments /* Authenticate, and delete all comments of particular issue */
> Never Mind Requirement
DELETE api/issues/ /* Authenticate, and delete all issues */
DELETE api/issues/:id /* Authenticate, and delete a particular issue */
4. Comment
> Immediate Requirement
GET api/comments/ /* Authenticate, and then return list of all comments */
GET api/comments/:id /* Authenticate, and return a particular comment */
PUT api/comments/:id /* Authenticate, and update a particular comment */
> Never Mind Requirement
DELETE api/comments/ /* Authenticate, and delete all comments */
DELETE api/comments/:id /* Authenticate, and delete a particular comment */
這個職位將有很大的幫助誰正在努力學習REST,因爲關係在這個架構中最重要和最艱難的事情的用戶。
可能是[codereview.se] –
@ DanielA.White爲什麼我會在此發佈代碼審查?是不是有一些叫做學習? 是的,它被稱爲學習有效的方法。 –
在引用特定資源(即'api/user /:id',而不是「用戶」)時最好使用單數形式。複數返回數組,單數返回對象。 – georg