Je voudrais savoir quelle est la meilleure pratique lorsque vous avez une ressource qui contient une liste de sous-ressources. Par exemple, vous avez la ressource Auteur qui contient des informations telles que le nom, l'identifiant, l'anniversaire et une liste de livres. Cette liste de livres n'existe qu'en relation avec l'auteur. Ainsi, vous avez le scénario suivant:REST conception pour mettre à jour/ajouter/supprimer des éléments d'une liste de sous-ressources
- Vous souhaitez ajouter un nouveau livre à la liste des livres
- Vous souhaitez mettre à jour le nom d'un livre dans la liste
- Vous voulez supprimer un livre de la liste
SOLUTION 1
Je recherche qui est la conception correcte et je l'ai trouvé plusieurs approches. Je veux savoir s'il existe une façon standard de concevoir cela. Je pense que la conception du livre, il dit avoir les méthodes suivantes:
- ajouter:
POST /authors/{authorId}/book/
- Pour mettre à jour:
PUT /authors/{authorId}/book/{bookId}
- Pour supprimer:
DELETE /authors/{authorId}/book/{bookId}
SOLUTION 2
Ma solution est d'avoir une seule méthode PUT qui fait toutes ces 3 choses parce que la liste des livres existe seulement à l'intérieur de l'auteur de l'objet et vous êtes réel mettant à jour l'auteur. Quelque chose comme:
PUT /authors/{authorId}/updateBookList
(et envoyer toute la liste des livres mis à jour dans l'objet auteur)
Je trouve plusieurs erreurs dans mon scénario. Par exemple, envoyer plus de données du client, avoir une certaine logique sur le client, plus de validation sur l'API et aussi compter sur le fait que le client a la dernière version de la liste de livres.
Ma question est la suivante: est-ce anti-pattern pour cela?
SITUATION 1. Dans mon cas, mon API utilise une autre API, pas une base de données. L'API utilisée n'a qu'une seule méthode de "updateBookList", donc je suppose qu'il est plus facile de dupliquer ce comportement dans mon API aussi. Est-ce aussi correct?
SITUATION 2. Mais, en supposant que mon API utilise une base de données, serait-il plus approprié d'utiliser SOLUTION 1?
Aussi, si vous pouviez fournir quelques articles, livres où vous pouvez trouver des informations similaires. Je sais que ce type de conception n'est pas écrit dans la pierre, mais certaines lignes directrices aideraient. (Exemple: REST API Design Rulebook)
Si c'est un vrai problème et non des devoirs, gardez à l'esprit que les livres peuvent avoir plusieurs auteurs. Un livre devrait vraiment être une ressource de premier niveau. –
C'est un vrai problème, mais dans ma situation, la liste des livres appartient à un seul auteur. Par exemple, si vous supprimez un auteur, ces livres n'existeront plus. – green
Pour l'instant. Vous risquez une rupture de l'API si les exigences métier changent. Vous seul pouvez savoir quelle est la probabilité, bien sûr. –