2016-12-10 2 views
0

Je souhaite créer une application similaire à celle-ci - Un client (identifié par l'ID utilisateur) envoie un appel API REST au serveur. Le serveur interroge la base de données pour vérifier si cet utilisateur a déjà un badge. Si c'est le cas, cela ne fait rien. Dans le cas contraire, il marque dans la base de données que l'utilisateur reçoit le badge et envoie un courrier électronique à l'utilisateur.PUT ou POST si l'opération semble idempotente

PUT/user // insigne/ POST/utilisateur // insigne/

Ma question est ici quelle méthode http dois-je utiliser ici? PUT ou POST?

Il est idempotent dans le sens où le courrier électronique est envoyé uniquement dans la première requête et les demandes suivantes ne font rien d'autre que d'interroger la base de données.

Quelle méthode http est-ce que les livres recommandent d'utiliser dans ce cas?

+0

Il n'y a pas de mise à jour, donc c'est PUT. – EJP

Répondre

0

Si elle est idempotente alors il devrait normalement être un PUT, comme il ressort de de RFC 7231, section 4.3.4:

La différence fondamentale entre le POST et PUT méthodes est mis en évidence par les différentes intentions pour la représentation ci-jointe. La ressource cible dans une requête POST est destinée à gérer la représentation incluse conformément à la sémantique de la ressource, tandis que la représentation incluse dans une requête PUT est définie comme remplaçant l'état de la ressource cible. Par conséquent, l'intention de PUT est idempotente et visible pour les intermédiaires, même si l'effet exact n'est connu que par le serveur d'origine.