Rest : PUT vs POST

L'architecture REST définit la manière dont sont créés la plupart des services web. Cette architecture se base sur le protocole HTTP avec l'utilisation de verbes. Il y a généralement une confusion autour de l'utilisation des verbes PUT et POST car ils peuvent tous deux être utilisés pour créer ou modifier une ressource. Ils ont cependant des caractéristiques différentes.

Le verbe POST peut être utilisé pour créer ou modifier une ressource. Pour modifier une ressource, il faut structurer son URL de cette façon :
POST /objet/ HTTP/1.1
Host: www.monsite.fr/
La même chose n'est pas possible pour créer l'objet car cela retournerait une erreur de ressource non trouvée. Pour créer un objet avec le verbe POST, il faut utiliser une URL générique.
POST /objet HTTP/1.1
Host: www.monsite.fr/
L'avantage de POST est que l'on peut choisir de ne modifier qu'une partie d'un objet et qu'il peut y avoir plusieurs requêtes de modification en même temps.

Le verbe PUT est utilisé pour créer ou modifier un objet. Ce verbe est idempotent. Cela signifie que l'on peut faire la requête plusieurs fois, celle-ci aura un effet identique. Il faut donc utiliser la même URL en spécifiant bien la ressource, pour la créer si elle n'existe pas ou la modifier dans le cas contraire. Cela signifie également qu'il est nécessaire de transmettre la ressource entière à chaque fois, on ne peut pas modifier qu'une partie de celle-ci.
PUT /objet/ HTTP/1.1
Host: www.monsite.fr/+F24

Divers