2017-02-16 55 views
0

我有這樣的模型關係:用戶任務,每個用戶都可以創建自己的任務,並可以看到所有任務。所以,很顯然我會TaskService與方法getAllTask​​s()getSortedTasks(字符串值)等 我很困惑,我應該有的CreateTask(任務task)updateTask(林斯頓ID,任務task)方法 - 在TaskServiceUserService,因爲有人告訴我,我應該有REST API的樣子:實體間關係的服務

post users/{id}/tasks 

post /tasks 

因爲 「任務屬於一個特定的用戶」。所以我不能選擇單獨的服務,api爲每個實體和普通服務,api whre 用戶是關係所有者。

回答

0

您應該在任務資源中實現創建任務的端點。

兩者是可能的:

POST your_root.com/api/{userId}/tasks/ ---->創建任務和需要從URI創建者的值。

但你也可以走這條路:

POST your_root.com/api/tasks/ --->在這種情況下,你必須告訴通過JSON或XML誰創建任務的服務器。身體看起來是這樣的,即:

{ 

    "author": "user A", 
    "assingee": null, 
    "headline": "Login Page for my app", 
    "text":"Build fancy login page" 

} 

最新變種,我的首選:

POST your_root.com/api/{userId}/tasks/ 和AUTHORID在身體再次:

{ 

    "authorId":"12" 
    "author": "user A", 
    "assingee": null, 
    "headline": "Login Page for my app", 
    "text":"Build fancy login page" 

} 

最後一個變體的優點是可以檢查uri中的userId是否等於body的authorId。所以你可以避免這個帶有某個Id的請求是偶然發生的。

希望有所幫助。

+0

謝謝。那麼,在最後一種情況下,我是否應該在UserService中創建'createUserTask(id,task)',或者我可以在UserRestController中使用TaskService?我不太瞭解「服務實體」案例中的面向對象的原則,請幫助我解決這個問題嗎? –

+0

所有創建任務的服務都是任務服務的一部分,不要被與用戶的關係混淆。必須通過taskservice創建任務,taskservice也要檢查用戶是否存在,這是否爲true,然後服務創建任務。否則,您的服務將以404響應 - 用戶未找到。 – n00bst3r

+0

非常感謝。 ! –