Spring Boot REST-Pfad-Zuordnung
Ich bin gerade am überlegen, was ist die beste Praxis zu erstellen-PFAD-Zuordnung für rest-Dienst.
Sagen wir mal wir haben folgenden Pfade:
/users POST
/users/1 PATCH, GET
/users/1/contacts GET, POST
/users/1/contacts/1 GET, PATCH
Die Frage ist - was ist die best practice, die Erstellung von Controllern.
Zum Beispiel haben wir UserController, wo wir technisch könnten alle diese Zuordnungen. Oder - wir sollten erstellen Sie separate Controller (UserController,
ContactsController).
f.e UserController unten, wenn wir alles unter.
@RequestMapping("users")
@RestController
public class UserController {
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<Void> createUser() {}
@RequestMapping(method = RequestMethod.GET)
public User getUser() {}
@RequestMapping(value = "{id}/contacts", method = RequestMethod.GET)
public List<Contact> getContacts() {}
@RequestMapping(value = "{id}/contacts", method = RequestMethod.POST)
public ResponseEntity<Void> createContact() {}
.....
}
Und wenn wir getrennte Steuerungen, wie Wege organisiert werden sollte dann werden?
Wahrscheinlich ist es eine dumme Frage, aber ich werde froh sein, wenn jemand Erfahrungen zu teilen.
- Ich bin ein fan für separaten regler so entfernen Sie die Kopplung zwischen Benutzer und Kontakte (zum Beispiel) - was ist, wenn Sie später verwenden möchten Kontakte in einem separaten Kontext? (d.h. unabhängig von der Benutzer, dem Sie gehören)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lässt vermuten, dass die Anzahl der Einheiten, die im Zusammenhang mit Benutzer-wird sich in Zukunft noch verstärken. So ist es offensichtlich, dass es besser ist, um es zu teilen nach Entitäten:
UserController -> UserService -> UserRepository,
ContactController -> ContactService -> ContactRepository,
FriendshipController -> FriendshipService -> FriendshipRepository
Aus meiner Erfahrung, User-Controller
Bezug auf Benutzer-Bereich Freundschaft controller:
Nicht sicher, es ist axiom, sondern mir helfen, organisieren meine code.
@RequestMapping("/user/{id}/friendship")
und dann werden alle anderen Zuordnungen sind vereinfacht in/code
Ich bin ein fan für separaten regler so entfernen Sie die Kopplung zwischen
Users
undContacts
(zum Beispiel) - was ist, wenn Sie später verwenden möchtenContacts
in einem separaten Kontext? (d.h. unabhängig von derUser
Sie gehören)Wenn Sie getrennt sind, können die Wege Aussehen würde, sehr ähnlich zu dem, was Sie haben:
Benutzer
Kontakte
Wenn es eine Abhängigkeit zwischen
Contacts
undUsers
(und in diesem Fall, es sieht aus wie es eine ist), können Sie es wie folgt:Dadurch können Sie Kontakte hinzufügen, um andere Dinge (nicht nur Benutzer) und Benutzer auf andere Kontexte (unabhängig von deren Kontakte)
Angenommen, die Benutzer einer Kaffeemaschine
Oder wenn die Kaffeemaschine ausfällt, wen wir Kontaktieren Sie für eine Reparatur?
Wohl einen Kontakt für eine Kaffeemaschine Reparatur ist auch ein User (aber nicht müssen),
Eine weitere Sache, können Sie es umdrehen und sagen, dass ein Kontakt für ein Gerät (z.B. eine Kaffeemaschine)
Mein Punkt ist, dass, wenn Sie entkoppeln die Kontakte der Nutzer, die Sie zuweisen können, Kontakte zu anderen Einrichtungen statt zwingen, die Beziehung zu
User -> Contacts
- es sei denn, natürlich, Sie wollen nicht entkoppelt, da der business-Regeln oder irgendeinem GrundIn jedem Fall, Bedenken Sie, dass es gibt viele Möglichkeiten, das mapping