Selon l '«idéologie REST», que doit contenir le corps de la réponse pour une requête PUT / POST / DELETE?
Qu'en est-il des codes de retour? Est
HTTP_OK
assez?Quelle est la raison de ces conventions, le cas échéant?
J'ai trouvé un bon article décrivant les différences POST / PUT: POST vs PUT Mais cela ne répond toujours pas à ma question.
rest
http
post
http-delete
tuxSlayer
la source
la source
Dans l'ensemble, les conventions sont «pensez comme si vous livriez simplement des pages Web».
Pour un PUT, je retournerais la même vue que vous auriez si vous faisiez un GET immédiatement après; cela donnerait un 200 (enfin, en supposant que le rendu réussisse bien sûr). Pour un POST, je ferais une redirection vers la ressource créée (en supposant que vous faites une opération de création; sinon, renvoyez simplement les résultats); le code pour une création réussie est un 201, qui est vraiment le seul code HTTP pour une redirection qui n'est pas dans la plage 300.
Je n'ai jamais été satisfait de ce qu'un DELETE devrait renvoyer (mon code produit actuellement un HTTP 204 et un corps vide dans ce cas).
la source
PUT
renvoyer la demande à la page suivante semble être une mauvaise pratique, car l'actualisation de la page résultante entraînera une nouvelle exécution de la demande. Au lieu de cela, pour moi, il est logique de faire une redirection, en supposant que vous traitez des requêtes synchrones.PUT
demande provoquant la restauration des données. Par exemple, si deux personnes font référence à la même page, l'une fait une mise à jour, puis l'autre fait une mise à jour, si la première personne actualise pour voir le résultat, cela finirait par faire revenir les choses avant que la deuxième personne ne soit faite leurs changements.La création d'une ressource est généralement mappée à POST, et cela doit renvoyer l'emplacement de la nouvelle ressource; par exemple, dans un échafaudage Rails, un CREATE redirigera vers le SHOW pour la ressource nouvellement créée. La même approche peut avoir un sens pour la mise à jour (PUT), mais c'est moins une convention; une mise à jour doit seulement indiquer le succès. Une suppression n'a probablement besoin que d'indiquer la réussite; si vous souhaitez rediriger, renvoyer la LISTE des ressources est probablement le plus logique.
Le succès peut être indiqué par HTTP_OK, oui.
La seule règle absolue dans ce que j'ai dit ci-dessus est qu'un CREATE doit renvoyer l'emplacement de la nouvelle ressource. Cela me semble une évidence; il est parfaitement logique que le client ait besoin de pouvoir accéder au nouvel élément.
la source
Selon la RFC7231, cela n'a pas d'importance et peut être vide
Comment nous implémentons la solution basée sur la norme json API dans le projet:
post / put: affiche les attributs d'objet comme dans get (le filtre de champ / les relations s'appliquent de la même manière)
supprimer: les données ne contiennent que null (pour sa représentation d'un objet manquant)
état de la suppression standard: 200
la source
J'aime Alfonso Tienda réponse du code d'état HTTP pour la mise à jour et la suppression?
Voici quelques conseils:
SUPPRIMER
METTRE
la source