2017-02-16 3 views
0

ich solche Modellbeziehungen haben: Benutzer, Aufgabe, jeder Benutzer kann seine eigenen Aufgaben erstellen und Alle Aufgaben sehen können. So offensichtlich werde ich Taskservice mit Methoden haben getAllTasks(), getSortedTasks (String value) usw. Ich bin verwirrt, wo sollte ich Create (Task-Task), updateTask (lond id, Aufgabe Aufgabe) Methoden - in Taskservice oder in Userservice, weil mir gesagt ich haben sollte REST API wie folgt aussieht:Entity Relations in Dienstleistungen

eher

post users/{id}/tasks 

als

post /tasks 

, weil "eine Aufgabe gehört zu einem bestimmten Benutzern". Also kann ich nicht zwischen separaten Dienstleistungen, api für jede Einheit und gemeinsame Dienstleistungen, api whre Benutzer ist Relationen Besitzer wählen.

Antwort

0

Sie sollten den Endpunkt zum Erstellen von Aufgaben in einer Aufgabenressource implementieren.

Beides ist möglich:

POST your_root.com/api/{userId}/tasks/ ----> Task erstellt und nimmt den Wert des Schöpfers vom uri.

Aber man könnte auch diesen Weg gehen:

POST your_root.com/api/tasks/ ---> In diesem Fall können Sie den Server von JSON oder XML zu sagen haben, die die Aufgabe erstellt. Der Körper könnte so aussehen iE:

{ 

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

} 

Letzte Variante und meine bevorzugte:

POST your_root.com/api/{userId}/tasks/ und die authorid im Körper wieder:

{ 

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

} 

Der Vorteil der letzten Variante ist, dass Sie überprüfen können, ob die userId im uri gleich der authorId des body ist. So können Sie vermeiden, dass diese Anfrage mit einer bestimmten ID versehentlich erfolgt ist.

Hoffnung, das hilft.

+0

Danke. Also, im letzten Fall sollte ich 'createUserTask (id, task)' auch in UserService haben oder ich könnte TaskService in UserRestController verwenden ?? Ich verstehe die OOP-Prinzipien im "Service-Entity" -Fall nicht wirklich. Könnten Sie mir bitte dabei helfen? –

+0

Alle Dienste, die eine Aufgabe erstellen, sind Teil des Aufgaben-Service. Verwechseln Sie nicht die Beziehung zum Benutzer Der Taskservice muss auch prüfen, ob der Benutzer existiert.Wenn dies der Fall ist, erstellt der Service die Aufgabe.Andernfalls antwortet Ihr Dienst mit 404 - Benutzer nicht gefunden. – n00bst3r

+0

Vielen Dank. ! –