Ich entwerfe eine REST-API des Dienstes und bin auf dem richtigen Weg zum Verschachteln von Ressourcen hängen geblieben.
Ressourcen: Partner, Tickets, Einstellungen
Verbindungen zwischen Ressourcen:
- Partner hat viele Tickets,
- Partner hat eine Reihe von Einstellungen,
Geschäftslogik:
- Sie können alle Partner als anonymen Benutzer auflisten,
- Sie können dem angegebenen Partner ein neues Ticket als anonymer Benutzer hinzufügen.
- Nur der Partner kann seine Tickets auflisten.
- Nur der Partner kann seine Tickets ändern.
- Nur Partner können Einstellungen auflisten.
- Nur der Partner kann die Einstellungen ändern.
Was ich bis jetzt gemacht habe:
Partnerressourcen
GET / partners - listet alle Partner auf
GET / partners /: id - zeigt Details des Partners an, angegeben durch: id-Parameter
GET / partners /: partner_id / tickets - listet Tickets des Partners auf
GET / partners /: partner_id / tickets /: id - details des angegebenen Partnertickets
POST / partners /: partner_id / tickets - speichert neues Ticket
PUT / partners /: partner_id / tickets /: id - aktualisiert das Ticket, angegeben durch: id-Parameter
GET / partners /: partner_id / settings - listet die Partnereinstellungen
PUT auf / partners /: partner_id / settings - Aktualisiert die Einstellungen des Partners
Problem / Frage
Wäre es richtig, verschachtelte Ressourcen (Tickets, Einstellungen) zu teilen, um Ressourcen zu trennen, oder sie als separate Ressourcen zu duplizieren?
Z.B
GET / tickets /: id
POST / tickets
PUT / tickets /: id
GET / settings
PUT / settings
quelle
/partners/:partner_id/tickets
Liste einige nützliche Daten für jedes Ticket enthält, nicht nur die kanonische URI des Tickets. In JSON könnte dies beispielsweise der Fall sein[{href='/tickets/12',value=10,due='2013-08-13'},{href='/tickets/18',value=7,due='2013-09-02'}]
, sodass der Client sofort eine Tabelle anzeigen und die vollständigen Ticketressourcen für zusätzliche Manipulationen abrufen / eingeben kann.DELETE /tickets/:id
?