Question Quelle est la différence entre un POST et un PUT HTTP REQUEST?


Ils semblent tous deux envoyer des données au serveur à l'intérieur du corps, alors qu'est-ce qui les rend différents?


629
2017-09-20 06:34


origine


Réponses:


HTTP PUT:

PUT met un fichier ou une ressource à un URI spécifique, et exactement à cet URI. S'il existe déjà un fichier ou une ressource à cet URI, PUT remplace ce fichier ou cette ressource. S'il n'y a pas de fichier ou de ressource, PUT en crée un. PUT est idempotent, mais paradoxalement, les réponses PUT ne peuvent pas être mises en cache.

Emplacement RFC HTTP 1.1 pour PUT

HTTP POST: 

Le POST envoie des données à un URI spécifique et attend que la ressource de cet URI gère la requête. Le serveur Web à ce stade peut déterminer quoi faire avec les données dans le contexte de la ressource spécifiée. La méthode POST n'est pas idempotent, cependant les réponses POST sont peut être mis en cache tant que le serveur définit les en-têtes Cache-Control et Expires appropriés.

Le RFC HTTP officiel spécifie que POST est:

  • Annotation des ressources existantes
  • Publier un message sur un tableau d'affichage, un groupe de discussion, une liste de diffusion,    ou un groupe d'articles similaire;
  • Fournir un bloc de données, tel que le résultat de la soumission d'un     forme, à un processus de traitement des données;
  • Extension d'une base de données via une opération d'ajout.

Emplacement RFC HTTP 1.1 pour POST

Différence entre POST et PUT:

Le RFC lui-même explique la différence de noyau:

La différence fondamentale entre le   Les requêtes POST et PUT sont reflétées dans   la signification différente de la   Demande-URI. L'URI dans une requête POST   identifie la ressource qui sera   gérer l'entité incluse. Cette   la ressource peut être un accepteur de données   processus, une passerelle vers d'autres   protocole, ou une entité distincte   accepte les annotations. En revanche, le   URI dans une requête PUT identifie le   entité jointe à la demande -   l'agent utilisateur sait ce qu'est l'URI   prévu et le serveur ne doit pas   tenter d'appliquer la demande à certains   autre ressource. Si le serveur désire   que la demande soit appliquée à un   URI différent, il DOIT envoyer une réponse 301 (Moved Permanently); l'agent utilisateur PEUT alors faire   sa propre décision concernant la redirection ou non de la demande.

En utilisant la bonne méthode, sans aucun rapport:

Un avantage de REST ROA vs SOAP est que lorsque vous utilisez HTTP REST ROA, il encourage l'utilisation correcte des verbes / méthodes HTTP. Ainsi, par exemple, vous n'utilisez que PUT lorsque vous voulez créer une ressource à cet emplacement précis. Et vous n'utiliserez jamais GET pour créer ou modifier une ressource.


647
2017-09-20 06:54



Seule la sémantique.

Un HTTP PUT est censé accepter le corps de la requête, puis stocker cela à la ressource identifiée par l'URI.

Un HTTP POST est plus général. Il est supposé initier une action sur le serveur. Cette action peut consister à stocker le corps de la requête sur la ressource identifiée par l'URI, ou il peut s'agir d'un URI différent ou d'une action différente.

PUT est comme un téléchargement de fichier. Une mise à un URI affecte exactement cette URI. Un POST à ​​un URI pourrait avoir n'importe quel effet.


155
2017-09-20 06:41



Pour donner des exemples de ressources de style REST:

"POST / livres" avec un tas d'informations sur le livre pourrait créer un nouveau livre, et répondre avec la nouvelle URL identifiant ce livre: "/ books / 5".

"PUT / books / 5" devrait soit créer un nouveau livre avec l'identifiant de 5, soit remplacer le livre existant par l'identifiant 5.

Dans le style non-ressource, POST peut être utilisé pour à peu près tout ce qui a un effet secondaire. Une autre différence est que PUT devrait être idempotent - plusieurs PUT des mêmes données à la même URL devraient être bien, alors que plusieurs POST pourraient créer plusieurs objets ou tout ce que fait votre action POST.


96
2017-09-20 07:44



1) GET: - Utilisé lorsque le client demande une ressource sur le serveur Web.

2) HEAD: - Utilisé lorsque le client demande des informations sur une ressource mais ne demande pas la ressource elle-même.

3) POST: - Utilisé lorsque le client envoie des informations ou des données au serveur, par exemple en remplissant un formulaire en ligne (c'est-à-dire qu'il envoie une grande quantité de données complexes au serveur Web).

4) PUT: - Utilisé lorsque le client envoie un document de remplacement ou télécharge un nouveau document sur le serveur Web sous l'URL de la demande.

5) DELETE: - Utilisé lorsque le client tente de supprimer un document du serveur Web, identifié par l'URL de la demande.

6) TRACE: - Utilisé lorsque le client demande aux proxies disponibles ou aux serveurs intermédiaires de modifier la demande pour s'annoncer.

7) OPTIONS: - Utilisé lorsque le client veut déterminer d'autres méthodes disponibles pour récupérer ou traiter un document sur le serveur Web.

8) CONNECT: - Utilisé lorsque le client veut établir une connexion transparente avec un hôte distant, généralement pour faciliter la communication cryptée SSL (HTTPS) via un proxy HTTP.


75
2018-05-26 06:14



PUT est conçu comme une méthode permettant de "charger" des éléments dans un URI particulier, ou d'écraser ce qui est déjà dans cet URI.

POST, d'autre part, est un moyen de soumettre des données liées à un URI donné.

Faire référence à le RFC HTTP


51
2017-09-20 06:36



Pour autant que je sache, PUT est principalement utilisé pour mettre à jour les enregistrements.

  1. POST - Pour créer un document ou toute autre ressource

  2. PUT - Pour mettre à jour le document créé ou toute autre ressource.

Mais pour être clair sur ce PUT habituellement 'Remplace' le dossier existant s'il est là et crée s'il n'y est pas là.


37
2018-02-15 07:02



Selon RFC, la différence entre PUT et POST est dans l'URI de la demande. L'URI identifié par POST définit l'entité qui gérera la requête POST. L'URI dans la requête PUT inclut l'entité dans la requête. Alors, POST /v1/coffees/orders signifie créer une nouvelle ressource et retourner un identifiant pour décrire la ressource. En revanche, PUT /v1/coffees/orders/1234 signifie mettre à jour une ressource identifiée par "1234"s'il existe, sinon créer un nouvel ordre et utiliser le orders/1234 URI pour l'identifier.

PUT and POST can both be used to create or update methods. The usage of the method depends on the idempotent behavior expected from the method as well as the location of the resource to identify it.


21
2017-08-03 10:28



D'autres ont déjà posté d'excellentes réponses, je voulais simplement ajouter que dans la plupart des langages, frameworks et cas d'utilisation, vous allez avoir beaucoup de POST, beaucoup plus souvent que PUT. Au point où PUT, DELETE, etc. sont essentiellement des questions trivia.


16
2017-09-20 08:15



Un POST est considéré comme une méthode de type usine. Vous incluez des données avec lui pour créer ce que vous voulez et tout ce qui est à l'autre extrémité sait quoi faire avec. Un PUT est utilisé pour mettre à jour des données existantes à une URL donnée, ou pour créer quelque chose de nouveau quand vous savez ce que l'URI va être et qu'il n'existe pas déjà (par opposition à un POST qui créera quelque chose et retournera une URL à si nécessaire).


11
2017-09-20 06:45