Dans quelle mesure une API RESTful doit-elle être discrète?


12

Je n'ai jamais construit d'API RESTful auparavant et je me demande à quel point cela devrait être discret?

Par exemple, disons que j'ai un client qui a un nom, une adresse, un numéro de téléphone, une adresse e-mail, une langue, etc.

Est-il logique qu'il existe un moyen de mettre à jour chaque champ individuel (adresse de mise à jour, adresse e-mail de mise à jour, etc.), ou devrait-il y avoir une seule mise à jour pour l'ensemble du client et chaque champ est facultatif?


3
Quelle partie de REST voulez-vous? Si vous avez juste besoin d'une API simple sans vous soucier des normes, vous pouvez la gérer comme la réponse acceptée de thorsten müller. Si vous voulez un vrai REST, vous devez rechercher Roy Fielding (+ dissertation par exemple). Il est l'inventeur de REST. Vous verrez que par exemple l'idée qu'une ressource == une table n'est pas la vérité. Vous constaterez également que, par exemple pour votre question, une méthode PATCH HTTP est assez courante pour mettre à jour un ou plusieurs champs. Où la méthode POST ou PUT (beaucoup de débat ici) peut être utilisée pour des mises à jour complètes sur une ressource.
Luc Franken

Réponses:


17

Vous avez une action de mise à jour pour une ressource. En règle générale, une table de votre base de données sera une ressource. Ainsi, dans votre exemple, il y a un contrôleur pour le client avec une action de mise à jour et les champs sont facultatifs dans la mesure du possible.

Il peut y avoir des exceptions à cela (par exemple, si vous mettez à jour le mot de passe, vous vous attendez à password & password_confirmation), mais cela est vrai dans la plupart des cas.

Il est plus probable que les exceptions soient des contrôleurs qui ont des actions limitées pour certaines ressources, comme un SessionsController qui ne peut être créé et détruit. Il est très peu probable que vous souhaitiez avoir des actions pour des champs uniques.

Dans votre exemple, une chose pourrait être gérée comme une ressource propre et c'est l'adresse. Si vous disposiez d'une table d'adresses, surtout s'il y avait plus d'une adresse par client (facturation, livraison ...) cela pourrait être traité comme une ressource imbriquée. Mais encore une fois une action de mise à jour pour la ressource d'adresse entière.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.