Dans la programmation de style RESTful, nous devons utiliser les méthodes HTTP comme blocs de construction. Je suis un peu confus quant aux méthodes qui correspondent aux méthodes CRUD classiques. GET / Read et DELETE / Delete sont assez évidents.
Cependant, quelle est la différence entre PUT / POST? Correspondent-ils un à un avec Créer et mettre à jour?
http
rest
crud
http-method
A dessiné
la source
la source
L'essentiel est de savoir si vous faites un changement idempotent ou non. Autrement dit, si une action sur le message deux fois se traduira par «la même» chose comme si elle n'avait été effectuée qu'une seule fois, vous avez un changement idempotent et il devrait être mappé sur PUT. Sinon, il est mappé sur POST. Si vous ne permettez jamais au client de synthétiser des URL, PUT est assez proche de Update et POST peut gérer Create très bien, mais ce n'est certainement pas la seule façon de le faire; si le client sait qu'il veut créer
/foo/abc
et sait quel contenu y mettre, cela fonctionne très bien comme un PUT.La description canonique d'un POST est lorsque vous vous engagez à acheter quelque chose: c'est une action que personne ne veut répéter sans le savoir. En revanche, la définition préalable de l'adresse d'expédition pour la commande peut être effectuée avec PUT: cela n'a pas d'importance si on vous dit d'envoyer
6 Anywhere Dr, Nowhereville
une fois, deux ou cent fois: c'est toujours la même adresse. Est-ce à dire que c'est une mise à jour? Cela pourrait être… Tout dépend de la façon dont vous voulez écrire le back-end. (Notez que les résultats peuvent ne pas être identiques: vous pouvez signaler à l'utilisateur la dernière fois qu'il a effectué un PUT dans le cadre de la représentation de la ressource, ce qui garantirait que les PUT répétés ne provoquent pas un résultat identique, mais le résultat serait toujours être «le même» dans un sens fonctionnel.)la source
POST
etPUT
est intéressante, et devrait apporter la réponse à "qui est" créer "et qui est" mettre à jour "?" que beaucoup plus clair. En outre, en ce qui concerne la mise en œuvre de l'API, il s'ensuivrait qu'un répétitifPUT
devrait équivaloir à un non-fonctionnement silencieux, tandis qu'un répétitifPOST
pourrait lever une exception si un aspect des données envoyées est censé rester unique dans le magasin de données. qui soutient l'application.Je cherchais la même réponse, voici ce que dit IBM. IBM Link
la source
Il y a une excellente conversation vidéo sur YouTube par Stormpath avec explique en fait cela, l'URL devrait passer à la bonne partie de la vidéo:
vidéo youtube de stormpath
Cela vaut également la peine de regarder, c'est plus d'une heure de conversation, mais très intéressant si vous songez à investir du temps dans la construction d'une API REST.
la source
À l'heure actuelle (2016), les derniers verbes HTTP sont GET, POST, PATCH , PUT et DELETE
Aperçu
J'espère que cela t'aides!
Si vous êtes intéressé par la conception d'API REST, c'est une lecture ansewome à avoir! site Web version en ligne dépôt github
la source
Cela dépend de la situation concrète .. mais en général:
PUT = mettre à jour ou modifier une ressource concrète avec un URI concret de la ressource.
POST = créer une nouvelle ressource sous la source de l'URI donné.
C'est à dire
Modifier un article de blog:
PUT: / blog / entry / 1
Créez-en un nouveau:
POST: / blog / entrée
PUT peut créer une nouvelle ressource dans certaines circonstances où l'URI de la nouvelle ressource est clair avant la demande. POST peut également être utilisé pour implémenter plusieurs autres cas d'utilisation, qui ne sont pas couverts par les autres (GET, PUT, DELETE, HEAD, OPTIONS)
La compréhension générale des systèmes CRUD est GET = demande, POST = créer, Put = mettre à jour, DELETE = supprimer
la source
Les éléments constitutifs de REST sont principalement les ressources (et l'URI) et l'hypermédia. Dans ce contexte,
GET
est le moyen d'obtenir une représentation de la ressource (qui peut en effet être mise en correspondance avec unSELECT
en termes CRUD).Cependant, vous ne devez pas nécessairement vous attendre à un mappage un à un entre les opérations CRUD et les verbes HTTP. La principale différence entre
PUT
etPOST
concerne leur propriété idempotente.POST
est également plus couramment utilisé pour les mises à jour partielles, car ilPUT
implique généralement l'envoi d'une nouvelle représentation complète de la ressource.Je suggère de lire ceci:
La spécification HTTP est également une référence utile:
la source
De manière générale, c'est le modèle que j'utilise:
la source
Le projet Symfony essaie de maintenir ses méthodes HTTP liées aux méthodes CRUD, et leur liste les associe comme suit:
Il convient de noter que, comme ils le disent sur cette page, "En réalité, de nombreux navigateurs modernes ne prennent pas en charge les méthodes PUT et DELETE."
D'après ce dont je me souviens, Symfony "simule" PUT et DELETE pour les navigateurs qui ne les prennent pas en charge lors de la génération de ses formulaires, afin d'essayer d'être aussi proche de l'utilisation de la méthode HTTP théoriquement correcte même lorsqu'un navigateur ne prend pas en charge il.
la source