Quelle est la différence entre PUT, POST et PATCH? [fermé]

280

Quelle est la différence entre les méthodes PUT, POST et PATCH dans le protocole HTTP?

selva kumar
la source
4
doublon possible de PUT vs POST dans REST
Nowhere man
12
Utiliser autre chose que GET / POST est insensé dans les API Web modernes. Trop de gens le font. Les URI identifiés dans la plupart des applications modernes NE SONT PAS des ressources à remplacer, à mettre à jour, etc. Ce ne sont pas des documents. Ce sont des PROCEDURES qui sont appelées. L'URI lui-même identifie rarement une ressource réelle, autre que la méthode invoquée. Par conséquent, utilisez GET pour les requêtes de chaîne de requête et les POST lorsque vous devez publier des données ou des fichiers JSON dans le corps de la demande. OMI, tout le reste essaie de transformer des concepts obsolètes impliquant des URI et des opérations sur des documents HTML statiques en une nouvelle architecture qui ne lui ressemble en rien.
Triynko
1
Toutes les bonnes réponses. Je voulais juste partager ma réponse sur les différences et quand vous devriez les utiliser.
Train
@Triynko Et les procédures auxquelles vous faites référence impliquent la création , la suppression et la modification des ressources. Il n'y a pas de meilleur moyen de transmettre de telles idées que d'être RESTful. Pourquoi pas?
Константин Ван

Réponses:

202

Différence entre les verbes PUT, POST, GET, DELETE et PATCH IN HTTP:

Les verbes HTTP les plus couramment utilisés POST, GET, PUT, DELETE sont similaires aux opérations CRUD (Créer, Lire, Mettre à jour et Supprimer) dans la base de données. Nous spécifions ces verbes HTTP dans la casse majuscule . Donc, ci-dessous est la comparaison entre eux.

  1. créer - POST
  2. lire - GET
  3. mise à jour - PUT
  4. supprimer - SUPPRIMER

PATCH: soumet une modification partielle à une ressource. Si vous avez seulement besoin de mettre à jour un champ pour la ressource, vous souhaiterez peut-être utiliser la méthode PATCH.

Remarque:
Puisque POST, PUT, DELETE modifie le contenu, les tests avec Fiddler pour l'url ci-dessous imitent simplement les mises à jour. Il ne supprime ni ne modifie réellement. Nous pouvons simplement voir les codes d'état pour vérifier si des insertions, des mises à jour, des suppressions se produisent.

URL: http://jsonplaceholder.typicode.com/posts/

1) OBTENEZ:

GET est le type le plus simple de méthode de requête HTTP; celle que les navigateurs utilisent chaque fois que vous cliquez sur un lien ou saisissez une URL dans la barre d'adresse. Il demande au serveur de transmettre les données identifiées par l'URL au client. Les données ne doivent jamais être modifiées côté serveur à la suite d'une demande GET. En ce sens, une requête GET est en lecture seule.

Vérification avec Fiddler ou PostMan: nous pouvons utiliser Fiddler pour vérifier la réponse. Ouvrez Fiddler et sélectionnez l'onglet Composer. Spécifiez le verbe et l'URL comme indiqué ci-dessous et cliquez sur Exécuter pour vérifier la réponse.

Verbe: GET

url: http://jsonplaceholder.typicode.com/posts/

Réponse: Vous obtiendrez la réponse sous la forme:

"userId": 1, "id": 1, "title": "sunt aut ...", "body": "quia et suscipit ..."

Dans le chemin «heureux» (ou sans erreur), GET renvoie une représentation en XML ou JSON et un code de réponse HTTP de 200 (OK). Dans un cas d'erreur, il renvoie le plus souvent un 404 (NON TROUVE) ou 400 (MAUVAISE DEMANDE).

2) POST:

Le verbe POST est principalement utilisé pour créer de nouvelles ressources. En particulier, il est utilisé pour créer des ressources subordonnées. Autrement dit, subordonné à une autre ressource (par exemple, parent).

En cas de création réussie, retournez le statut HTTP 201, en renvoyant un en-tête Location avec un lien vers la ressource nouvellement créée avec le statut HTTP 201.

Vérification avec Fiddler ou PostMan: nous pouvons utiliser Fiddler pour vérifier la réponse. Ouvrez Fiddler et sélectionnez l'onglet Composer. Spécifiez le verbe et l'URL comme indiqué ci-dessous et cliquez sur Exécuter pour vérifier la réponse.

Verbe: POST

url: http://jsonplaceholder.typicode.com/posts/

Organe de demande:

data: {title: 'foo', body: 'bar', userId: 1000, Id: 1000}

Réponse: vous recevrez le code de réponse 201.

Si nous voulons vérifier l'enregistrement inséré avec Id = 1000, changez le verbe en Get et utilisez la même URL et cliquez sur Execute.

Comme dit précédemment, l'url ci-dessus n'autorise que les lectures (GET), nous ne pouvons pas lire les données mises à jour en temps réel.

3) METTRE:

PUT est le plus souvent utilisé pour les capacités de mise à jour , PUT vers un URI de ressource connue avec le corps de la demande contenant la représentation nouvellement mise à jour de la ressource d'origine.

Vérification avec Fiddler ou PostMan: nous pouvons utiliser Fiddler pour vérifier la réponse. Ouvrez Fiddler et sélectionnez l'onglet Composer. Spécifiez le verbe et l'URL comme indiqué ci-dessous et cliquez sur Exécuter pour vérifier la réponse.

Verbe: PUT

url: http://jsonplaceholder.typicode.com/posts/1

Organe de demande:

data: {title: 'foo', body: 'bar', userId: 1, Id: 1}

Réponse: En cas de mise à jour réussie, il renvoie 200 (ou 204 si aucun contenu dans le corps n'est renvoyé) à partir d'un PUT.

4) SUPPRIMER:

SUPPRIMER est assez facile à comprendre. Il est utilisé pour supprimer une ressource identifiée par un URI.

En cas de suppression réussie, renvoyez l'état HTTP 200 (OK) avec un corps de réponse, peut-être la représentation de l'élément supprimé (demande souvent trop de bande passante), ou une réponse encapsulée (voir Valeurs de retour ci-dessous). Soit cela, soit renvoyez l'état HTTP 204 (AUCUN CONTENU) sans corps de réponse. En d'autres termes, un état 204 sans corps, ou la réponse de style JSEND et l'état HTTP 200 sont les réponses recommandées.

Vérification avec Fiddler ou PostMan: nous pouvons utiliser Fiddler pour vérifier la réponse. Ouvrez Fiddler et sélectionnez l'onglet Composer. Spécifiez le verbe et l'URL comme indiqué ci-dessous et cliquez sur Exécuter pour vérifier la réponse.

Verbe: DELETE

url: http://jsonplaceholder.typicode.com/posts/1

Réponse: En cas de suppression réussie, il renvoie l'état HTTP 200 (OK) avec un corps de réponse.

Exemple entre PUT et PATCH

METTRE

Si je devais changer mon prénom, puis envoyer une demande de mise à jour PUT:

{"first": "Nazmul", "last": "hasan"} Donc, ici pour mettre à jour le prénom, nous devons envoyer à nouveau tous les paramètres des données.

PIÈCE:

La demande de correctif indique que nous n'enverrons que les données que nous devons modifier sans modifier ou affecter d'autres parties des données. Ex: si nous devons mettre à jour uniquement le prénom, nous ne transmettons que le prénom.

Veuillez consulter les liens ci-dessous pour plus d'informations:

https://jsonplaceholder.typicode.com/

https://github.com/typicode/jsonplaceholder#how-to

Quelle est la principale différence entre PATCH et PUT request?

http://www.restapitutorial.com/lessons/httpmethods.html

Krishna
la source
62
PUT n'est pas à jour. PUT consiste à créer ou remplacer l'entité à l'URI donné. Selon la spécification HTTP, PUT est idempotent. Oui, il peut être utilisé pour la mise à jour, mais penser uniquement à la mise à jour n'est pas correct.
Maladon
2
J'accepte que PUT ne soit pas mis à jour, il peut être mappé avec replace, car lorsque vous envoyez PUT, il remplace la ressource existante. Mais si nous envoyons PATCH, il ne remplacera que les entrées spécifiées.
Atul Chavan
1
Parce que PUT peut également être utilisé pour créer, je ne sais pas comment votre réponse indique que je dois utiliser?
Rob P.
1
Cette réponse est bien meilleure, mais ne se compare pas avec PATCH: stackoverflow.com/a/630475/2391795
Vadorequest
47

PUT = remplacer la RESSOURCE ENTIÈRE par la nouvelle représentation fournie

PATCH = remplacer des parties de la ressource source par les valeurs fournies ET | OU d'autres parties de la ressource sont mises à jour que vous n'avez pas fournies (horodatages) ET | OU la mise à jour de la ressource affecte d'autres ressources (relations)

https://laracasts.com/discuss/channels/general-discussion/whats-the-differences-between-put-and-patch?page=1

Ankit Rai
la source
11

La définition ci-dessous est tirée de l'exemple du monde réel.

Présentation de l'exemple
Pour chaque donnée client, nous stockons un identifiant pour trouver ces données client et nous renverrons cet identifiant à ce client pour référence.

  1. PUBLIER

    • Si le client envoie des données sans identifiant à l'aide de la méthode POST, nous les stockons et attribuons un nouvel identifiant.
    • Si le client envoie à nouveau les mêmes données sans identifiant à l'aide de la méthode POST, nous les stockons et attribuons un nouvel identifiant.
    • Remarque : la duplication est autorisée ici
  2. METTRE

    • Si le client envoie des données avec un identifiant, nous vérifierons si cet identifiant existe. Si l'identifiant existe, nous mettrons à jour les données, sinon nous les créerons et attribuerons un nouvel identifiant.
  3. PIÈCE

    • Si le client envoie des données avec un identifiant, nous vérifierons si cet identifiant existe. Si l'identifiant existe, nous mettrons à jour les données, sinon nous lèverons une exception.

Remarque: Sur la méthode Put , nous ne lançons pas d'exception si aucun identifiant n'est trouvé. Mais dans la méthode Patch , nous lançons une exception si l'identifiant n'est pas trouvé.

Faites-moi savoir si vous avez des questions sur ce qui précède.

Yokesh Waran
la source
8

Types de demande

  • créer - POST
  • lire - GET
  • créer ou mettre à jour - PUT
  • supprimer - SUPPRIMER
  • mise à jour - PATCH

GET / PUT est idempotent PATCH peut être parfois idempotent

Qu'est-ce qui est idempotent - Cela signifie que si nous lançons la requête plusieurs fois, cela ne devrait pas affecter le résultat de celle-ci.

get : -

get simple. Obtenez les données du serveur et montrez-les à l'utilisateur

{
id:1
name:parth
email:x@x.com
}

post : -

créer une nouvelle ressource dans la base de données. Cela signifie qu'il ajoute de nouvelles données. Ce n'est pas idempotent.

put : -

Créer une nouvelle ressource sinon ajouter à l'existant. Idempotent car il mettra à jour la même ressource à chaque fois et la sortie sera la même. ex. - donnée initiale

{
id:1
name:parth
email:x@x.com
}
{
id:1
email:ppp@ppp.com
}

patch

alors maintenant est venu la demande de patch PATCH peut être parfois idempotent

id:1
name:parth
email:[email protected]
}

nom du patch: w

{
id:1
name:w
email:x@x.com
}
Méthode HTTP
OBTENEZ oui
POST no
METTEZ oui
PATCH no *
OPTIONS oui
TÊTE oui
SUPPRIMER oui

Ressources: Idempotent - Qu'est - ce que l'idempotence?

Parth Patel
la source
Que signifie «parfois» idempotent? Qu'est-ce qui détermine l'idempotence?
Polv
7

voici une description simple de tout:

  • POST sert toujours à créer une ressource (peu importe si elle a été dupliquée)
  • PUT sert à vérifier si la ressource existe, puis à la mettre à jour, sinon créer une nouvelle ressource
  • PATCH est toujours pour mettre à jour une ressource
a_m_dev
la source
5

Différence principale entre les demandes PUT et PATCH :

Supposons que nous ayons une ressource qui contient le prénom et le nom d'une personne.

Si nous voulons changer le prénom, nous envoyons une demande de mise à jour

{ "first": "Michael", "last": "Angelo" }

Ici, bien que nous ne changions que le prénom, avec la demande PUT, nous devons envoyer les deux paramètres en premier et en dernier.
En d'autres termes, il est obligatoire d'envoyer à nouveau toutes les valeurs, la charge utile complète.

Cependant, lorsque nous envoyons une demande PATCH, nous n'envoyons que les données que nous voulons mettre à jour. En d'autres termes, nous envoyons uniquement le prénom à mettre à jour, pas besoin d'envoyer le nom de famille.

débutants
la source
2

Assez logique la différence entre PUT & PATCH par rapport à l'envoi de données complètes et partielles pour le remplacement / la mise à jour respectivement. Cependant, juste quelques points comme ci-dessous

  1. Parfois, le POST est considéré comme pour les mises à jour par rapport au PUT pour la création
  2. HTTP impose-t-il / vérifie-t-il l'envoi de données complètes ou partielles dans PATCH? Sinon, PATCH peut être tout à fait identique à la mise à jour comme dans PUT / POST
manish agrawal
la source
2

Pense-y de cette façon...

POST - créer

PUT - remplacer

PATCH - mise à jour

GET - lire

SUPPRIMER - supprimer

Kwame Opare Asiedu
la source
2
J'ajouterais probablement cette distinction : " PUT si le client détermine l'adresse de la ressource résultante, POST si le serveur le fait. "
ruffin
1

Explication la plus simple:

POST - Créer un nouvel enregistrement

PUT - Si l'enregistrement existe, mettez à jour sinon, créez un nouvel enregistrement

PATCH - mise à jour

GET - lire

SUPPRIMER - supprimer

Sahibzada Abdul Hadi
la source
En quoi est-ce sensiblement différent de la réponse de Kwame publiée environ deux semaines avant la vôtre?
ruffin