Aller au contenu principal

Verbes HTTP

Quel verbe utiliser et comment

VerbeUsageExemple EndpointExemple Body
PUTSi toute la ressource à remplacer/nomenclature/{id}{ tous les attributs }
PUTSi un seul attribut de la ressource à modifier/nomenclature/{id}/libellemon libelle
POSTSi c'est une action métier avec un verbe/nomenclature/{id}/do-something{"change-weel": {"unit":"inch", "value":"48"}}
POSTSi un élément extérieur à la ressource concernée/nomenclature/{id}/libelle-update{"libelle":"mon libelle", "reason":"parce que"}
POSTSi plusieurs attributs à modifier avec un verbe = action métier/nomenclature/{id}/info-update{"description": "ma description", "title":"mon titre"}
POSTSi un changement de statut avec une action métier/nomenclature/simple/{id}/unvalidateNONE
/nomenclature/simple/{id}/validateNONE
DELETESi peu d'effets de bord, pour supprimer un élément/nomenclature/simple/{id}NONE
POSTSi un/des élément(s) extérieur(s) pour supprimer un élément/nomenclature/simple/{id}/delete{"reason":"parce que"}
POSTAu moindre doute...
info

BODY: faire en sorte de n'y mettre que le nécessaire à l'action demandée

Verbe PATCH

  • Risque verrouillage sécu au niveau firewall
  • il faudrait prendre en compte tous les cas
danger

Pour ces raisons: ne pas utiliser

Que doit renvoyer le contrôleur

Les éléments ci-dessous permettent d'harmoniser les réponses selon les cas les plus courants :

  • Creation de ressource (ex : typologie) ou de sous-ressource (ex : viseur dans une typologie): id de l'objet crée sous la forme de idResponse (objet commun de la forme { "id" : 132 }) + @ResponseStatus(HttpStatus.CREATED)
  • Association de ressource (ex : association d'un document à une typologie): retourne void + annotation @ResponseStatus(HttpStatus.NO_CONTENT)
  • Mise à jour d'une ressource (update): retourne void + annotation @ResponseStatus(HttpStatus.NO_CONTENT) (ex : association d'un document à une typologie)
  • Suppression d'une ressource : retourne void + annotation @ResponseStatus(HttpStatus.NO_CONTENT)