web-dev-qa-db-fra.com

API Rest - Mettre à jour un seul champ de ressource

Disons que j'ai un point d'extrémité de repos pour ma ressource de pilote. J'ai une méthode PUT comme celle-ci

myapi/drivers/{id}

{body of put method}

J'ai besoin d'ajouter des fonctionnalités qui permettront d'activer et de désactiver le pilote

Est-ce une bonne idée de créer un nouveau point de terminaison pour cela comme ça?

PUT myapi/drivers/{id}/enable/false

ou est-il préférable d'utiliser un point de terminaison existant? Un problème avec l'utilisation du point de terminaison existant est que le pilote a beaucoup de champs (près de 30) et l'envoi de tous ces champs juste pour la mise à jour uniquement du pilote "activé" ou "désactivé" est quelque chose de excessif.

Qu'est-ce que tu penses?

21
user1321466

C'est exactement pour cela que la méthode HTTP PATCH est conçue. Il est utilisé dans les cas où la ressource a de nombreux champs mais que vous ne souhaitez en mettre à jour que quelques-uns.

Tout comme avec PUT, vous envoyez une demande à myapi/drivers/{id}. Cependant, contrairement à PUT, vous envoyez uniquement les champs que vous souhaitez modifier dans le corps de la demande.

Création de points de terminaison comme myapi/drivers/{id}/enable n'est pas très RESTful, car "enable" ne peut pas vraiment être appelé une ressource à lui seul.

Pour un exemple d'implémentation d'un point de terminaison Spring PATCH, veuillez consulter ceci link .

14
Sync

Utilisez la méthode PATCH Http pour mettre à jour un champ

PATCH myapi/drivers/{id}/enable
1
whaat