Je conçois une API de service REST et je suis resté bloqué sur la bonne façon d'imbriquer les ressources.
Ressources: partenaires, tickets, paramètres
Connexions entre les ressources:
- partenaire a de nombreux billets,
- partenaire a défini des paramètres,
Logique Bussines:
- vous pouvez répertorier tous les partenaires en tant qu'utilisateur anonyme,
- vous pouvez ajouter un nouveau ticket au partenaire spécifié en tant qu'utilisateur anonyme,
- seul partenaire peut lister ses billets,
- seul partenaire peut modifier ses billets,
- seul le partenaire peut répertorier les paramètres,
- seul le partenaire peut modifier les paramètres,
Ce que j'ai fait jusqu'à présent:
Ressources partenaires
GET / partners - liste tous les partenaires
GET / partners /: id - affiche les détails du partenaire spécifié par: paramètre id
GET / partners /: partner_id / tickets - liste des tickets du partenaire
GET / partners /: partner_id / tickets /: id - détails du ticket du partenaire spécifié
POST / partners /: partner_id / tickets - enregistre le nouveau ticket
PUT / partners /: partner_id / tickets /: id - met à jour le ticket spécifié par: id paramètre
GET / partners /: partner_id / settings - liste des paramètres du partenaire
PUT / partners /: partner_id / settings - met à jour les paramètres du partenaire
Problème / Question
Serait-ce un bon moyen de diviser les ressources imbriquées (tickets, paramètres) pour séparer les ressources ou les dupliquer en tant que ressources distinctes?
Par exemple
GET / tickets /: id
POST / tickets
PUT / tickets /: id
GET / paramètres
PUT / paramètres
la source
/partners/:partner_id/tickets
liste inclue des données utiles pour chaque ticket, pas seulement l'URI canonique du ticket. Par exemple, dans JSON[{href='/tickets/12',value=10,due='2013-08-13'},{href='/tickets/18',value=7,due='2013-09-02'}]
, le client pourrait afficher immédiatement une table et obtenir / mettre les ressources de ticket complètes pour une manipulation supplémentaire.DELETE /tickets/:id
?