Verbes HTTP
Quel verbe utiliser et comment
Verbe | Usage | Exemple Endpoint | Exemple Body |
---|---|---|---|
PUT | Si toute la ressource à remplacer | /nomenclature/{id} | { tous les attributs } |
PUT | Si un seul attribut de la ressource à modifier | /nomenclature/{id}/libelle | mon libelle |
POST | Si c'est une action métier avec un verbe | /nomenclature/{id}/do-something | {"change-weel": {"unit":"inch", "value":"48"}} |
POST | Si un élément extérieur à la ressource concernée | /nomenclature/{id}/libelle-update | {"libelle":"mon libelle", "reason":"parce que"} |
POST | Si plusieurs attributs à modifier avec un verbe = action métier | /nomenclature/{id}/info-update | {"description": "ma description", "title":"mon titre"} |
POST | Si un changement de statut avec une action métier | /nomenclature/simple/{id}/unvalidate | NONE |
/nomenclature/simple/{id}/validate | NONE | ||
DELETE | Si peu d'effets de bord, pour supprimer un élément | /nomenclature/simple/{id} | NONE |
POST | Si un/des élément(s) extérieur(s) pour supprimer un élément | /nomenclature/simple/{id}/delete | {"reason":"parce que"} |
POST | Au 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)