PUT vs POST - Forskel mellem dem
Nøgleforskelle mellem PUT og POST
- PUT-metoden kaldes, når du skal ændre en enkelt ressource, mens POST-metoden kaldes, når du skal tilføje en underordnet ressource.
- POST-metodesvar kan cachelagres, men du kan ikke cache PUT-metodesvar.
- Du kan bruge UPDATE-forespørgsel i PUT, hvorimod du kan bruge oprette forespørgsel i POST.
- I PUT-metoden bestemmer klienten hvilken URI-ressource der skal have, og i POST-metoden bestemmer serveren hvilken URI-ressource der skal have.
- PUT fungerer som specifikt, mens POST fungerer som abstrakt.
- Hvis du sender den samme PUT-anmodning flere gange, vil resultatet forblive det samme, men hvis du sender den samme POST-anmodning flere gange, vil du modtage forskellige resultater.
- PUT-metoden er idempotent, hvorimod POST-metoden ikke er idempotent.

Hvad er PUT-metoden?
PUT-metoden bruges til at opdatere de tilgængelige ressourcer på serveren. Typisk erstatter det, hvad der findes på mål-URL'en med noget andet. Du kan bruge den til at lave en ny ressource eller overskrive en eksisterende. PUT anmoder om, at den vedlagte enhed skal lagres under den leverede anmodede URI (Uniform Resource Identifier).
Hvad er POST-metoden?
POST er en metode, der understøttes af HTTP og
viser, at en webserver accepterer de data, der er inkluderet i meddelelsens brødtekst, som anmodes om. POST bruges ofte af World Wide Web til at sende brugergenererede data til webserveren, eller når du uploader en fil.
Forskelle mellem PUT og POST i REST API'er
Her er den vigtige forskel mellem PUT- og POST-metoden:
PUT | POST |
---|---|
Denne metode er idempotent. | Denne metode er ikke idempotent. |
PUT-metoden er opkald, når du skal ændre en enkelt ressource, som allerede er en del af ressourceopsamlingen. | POST-metoden er opkald, når du skal tilføje en underordnet ressource under ressourceindsamling. |
RFC-2616 viser, at PUT-metoden sender en anmodning om en lukket enhed gemt i den leverede anmodnings-URI. | Denne metode anmoder serveren om at acceptere den enhed, som er indeholdt i anmodningen. |
PUT-metodens syntaks er PUT /spørgsmål/{spørgsmål-id} | POST-metodens syntaks er POST /spørgsmål |
Du kan ikke cache PUT-metodesvar. | POST-metodens svar kan cachelagres. |
PUT /vi/juice/orders/1234 angiver, at du opdaterer en ressource, som er identificeret med "1234". | POST /vi/juice/orders angiver, at du opretter en ny ressource og returnerer en identifikator for at beskrive ressourcen. |
Hvis du sender den samme anmodning flere gange, forbliver resultatet det samme. | Hvis du sender den samme POST-anmodning mere end én gang, vil du modtage forskellige resultater. |
PUT fungerer som specifik. | POST arbejde som abstrakt. |
Vi bruger UPDATE-forespørgsel i PUT. | Vi bruger oprette forespørgsel i POST. |
I PUT-metoden bestemmer klienten, hvilken URI-ressource der skal have. | I POST-metoden bestemmer serveren, hvilken URI-ressource skal have. |
Eksempel på PUT
Her er webservereksemplet på en PUT-metode:
HTTP PUT http://www.google.com/users/234
HTTP PUT http://www.google.com/users/234/accounts/567
Anmod om
PUT /new.html HTTP/1.1 Host: example.com Content-type: text/html Content-length: 20 <p>New File</p>
Svar
Hvis målressourcen har aktuel repræsentation og er modificeret med tilstanden for den vedlagte repræsentation, skal serveren sende to svar. Den første svarkode er 200 (OK), og den anden svarkode er 204 (Intet indhold).
Hvis målressourcen ikke har nogen repræsentation, skal serveren informere brugeren ved at sende et 201-kode (Oprettet) svar.
HTTP/1.1 201 Created Content-Location: /new.html
Eksempel på POST
Her er et eksempel på POST-metoden:
HTTP POST http://www.google.com/users
HTTP POST http://www.google.com/users/234/accounts
En formular, der bruger standardindholdstypen application/x-www-form-urlencoded:
POST /test HTTP/1.1 Host: abc.example Content-Type: application/x-www-form-urlencoded Content-Length: 40 field1=value1&field2=value2
Test af en API med PUT-anmodninger
Her er trinene til at teste API med PUT-anmodninger:
Trin 1) Opdater ressourcer med PUT-anmodning.
Trin 2) Brug GET-metoden til ressource. Hvis PUT-anmodningen lykkes, vil du modtage nye data. Denne metode vil mislykkes, hvis de leverede data i anmodningen er ugyldige. Derfor vil den ikke opdatere noget.
Test af en API med POST-anmodninger
Her er trinene til at teste API med POST-anmodninger:
Trin 1) Opret en ressource ved hjælp af POST-anmodning, og sørg for, at den returnerer 200 statuskode.
Trin 2) Lav en GET-anmodning for den ressource, og gem dataene i det korrekte format.
Trin 3) Du skal tilføje test, der sikrer, at POST-anmodninger mislykkes med forkerte data.
Fordele ved PUT-metoden
Her er fordele/fordele ved at bruge PUT-metoden:
- Det hjælper dig med at gemme den leverede enhed under den medfølgende URI
- Hvis den leverede enhed allerede eksisterer, kan du udføre opdateringshandlingen, eller du kan oprette med denne URI.
- Du kan oprette en ressource så mange gange du vil.
- Det er meget nemt at oprette en ressource med PUT-metoden.
- Du behøver ikke kontrollere, om brugeren har klikket på indsend-knappen flere gange eller ej.
- Den kan identificere den enhed, der er vedlagt anmodningen.
Fordele ved POST-metoden
Her er fordele/fordele ved at bruge POST-metoden:
- Denne metode hjælper dig med at bestemme ressource-URI.
- Det er meget nemt at angive en ny ressourceplaceringshoved ved at bruge placeringsoverskrift.
- Du kan sende en anmodning om at acceptere enheden som en ny underordnet til ressourcen, som identificeres af URI'en.
- Du kan sende brugergenererede data til webserveren.
- Det er meget nyttigt, når du ikke kender URL til at beholde nogen ressource.
- Brug POST, når du har brug for serveren, som styrer URL-generering af dine ressourcer.
- POST er en sikker metode, da dens anmodninger ikke forbliver i browserhistorikken.
- Du kan ubesværet overføre en stor mængde data ved hjælp af post.
- Du kan holde dataene private.
- Denne metode kan bruges til at sende binære såvel som ASCII-data.