PUT vs POST - Diferența dintre ele
Diferențele cheie între PUT și POST
- Metoda PUT este apelată atunci când trebuie să modificați o singură resursă, în timp ce metoda POST este apelată atunci când trebuie să adăugați o resursă copil.
- Răspunsurile metodei POST pot fi stocate în cache, dar nu puteți stoca în cache răspunsurile metodei PUT.
- Puteți utiliza interogarea UPDATE în PUT, în timp ce puteți utiliza interogarea create în POST.
- În metoda PUT, clientul decide ce resursă URI ar trebui să aibă, iar în metoda POST, serverul decide ce resursă URI ar trebui să aibă.
- PUT funcționează ca specific, în timp ce POST funcționează ca abstract.
- Dacă trimiteți aceeași cerere PUT de mai multe ori, rezultatul va rămâne același, dar dacă trimiteți aceeași cerere POST de mai multe ori, veți primi rezultate diferite.
- Metoda PUT este idempotentă, în timp ce metoda POST nu este idempotentă.

Ce este metoda PUT?
Metoda PUT este folosită pentru a actualiza resursele disponibile pe server. De obicei, înlocuiește orice există la adresa URL țintă cu altceva. Îl puteți folosi pentru a crea o resursă nouă sau pentru a suprascrie una existentă. PUT solicită ca entitatea inclusă să fie stocată sub URI-ul (Uniform Resource Identifier) solicitat furnizat.
Ce este metoda POST?
POST este o metodă care este acceptată de HTTP și
arată că un server web acceptă datele incluse în corpul mesajului, care este solicitat. POST este adesea folosit de World Wide Web pentru a trimite date generate de utilizator către serverul web sau atunci când încărcați fișierul.
Diferențele dintre PUT și POST în API-urile REST
Iată diferența importantă dintre metoda PUT și POST:
PUT | POST |
---|---|
Această metodă este idempotentă. | Această metodă nu este idempotentă. |
Metoda PUT este apel atunci când trebuie să modificați o singură resursă, care este deja o parte a colecției de resurse. | Metoda POST este apel atunci când trebuie să adăugați o resursă copil în colecția de resurse. |
RFC-2616 descrie că metoda PUT trimite o solicitare pentru o entitate închisă stocată în URI-ul de solicitare furnizat. | Această metodă solicită serverului să accepte entitatea care este inclusă în cerere. |
Sintaxa metodei PUT este PUT /questions/{question-id} | Sintaxa metodei POST este POST /questions |
Nu puteți stoca în cache răspunsurile metodei PUT. | Răspunsul la metoda POST poate fi stocat în cache. |
PUT /vi/juice/orders/1234 indică faptul că actualizați o resursă care este identificată prin „1234”. | POST /vi/juice/orders indică faptul că creați o nouă resursă și returnați un identificator pentru a descrie resursa. |
Dacă trimiteți aceeași cerere de mai multe ori, rezultatul va rămâne același. | Dacă trimiteți aceeași cerere POST de mai multe ori, veți primi rezultate diferite. |
PUT funcționează ca specific. | POST lucrează ca abstract. |
Folosim interogarea UPDATE în PUT. | Folosim create interogare în POST. |
În metoda PUT, clientul decide ce resursă URI ar trebui să aibă. | În metoda POST, serverul decide ce resursă URI ar trebui să aibă. |
Exemplu de PUT
Iată un exemplu de server web al unei metode PUT:
HTTP PUT http://www.google.com/users/234
HTTP PUT http://www.google.com/users/234/accounts/567
Cerere
PUT /new.html HTTP/1.1 Host: example.com Content-type: text/html Content-length: 20 <p>New File</p>
Răspunsuri
Dacă resursa țintă are reprezentare curentă și este modificată cu starea reprezentării incluse, atunci serverul ar trebui să trimită două răspunsuri. Primul cod de răspuns este 200 (OK), iar al doilea cod de răspuns este 204 (Fără conținut).
Dacă resursa țintă nu are nicio reprezentare, atunci serverul ar trebui să informeze utilizatorul trimițând un răspuns cu cod 201 (Creat).
HTTP/1.1 201 Created Content-Location: /new.html
Exemplu de POST
Iată un exemplu de metodă POST:
HTTP POST http://www.google.com/users
HTTP POST http://www.google.com/users/234/accounts
Un formular care utilizează tipul de conținut implicit aplicație/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
Testarea unui API cu solicitări PUT
Iată pașii pentru a testa API-ul cu solicitări PUT:
Pas 1) Actualizați resursele cu cererea PUT.
Pas 2) Utilizați metoda GET pentru resursă. Dacă cererea PUT are succes, veți primi date noi. Această metodă va eșua dacă datele furnizate în cerere sunt nevalide. Prin urmare, nu va actualiza nimic.
Testarea unui API cu solicitări POST
Iată pașii pentru a testa API-ul cu solicitări POST:
Pas 1) Creați o resursă folosind cererea POST și asigurați-vă că returnează codul de stare 200.
Pas 2) Faceți o solicitare GET pentru resursa respectivă și salvați datele în formatul corect.
Pas 3) Trebuie să adăugați teste care să asigure că cererile POST eșuează cu date incorecte.
Avantajele metodei PUT
Iată avantajele/beneficiile utilizării metodei PUT:
- Vă ajută să stocați entitatea furnizată sub URI-ul furnizat
- Dacă entitatea furnizată există deja, atunci puteți efectua operația de actualizare sau puteți crea cu acel URI.
- Puteți crea o resursă de câte ori doriți.
- Crearea unei resurse cu metoda PUT este foarte ușoară.
- Nu trebuie să verificați dacă utilizatorul a făcut clic pe butonul de trimitere de mai multe ori sau nu.
- Poate identifica entitatea atașată cererii.
Avantajele metodei POST
Iată avantajele/beneficiile utilizării metodei POST:
- Această metodă vă ajută să determinați URI-ul resursei.
- Specificarea unui nou antet de locație a resursei este foarte ușoară utilizând antetul de locație.
- Puteți trimite o cerere de acceptare a entității ca nou subordonat al resursei, care este identificat prin URI.
- Puteți trimite date generate de utilizator către serverul web.
- Este foarte util atunci când nu cunoașteți URL-ul pentru a păstra nicio resursă.
- Utilizați POST atunci când aveți nevoie de server, care controlează generarea URL-ului resurselor dvs.
- POST este o metodă sigură, deoarece solicitările sale nu rămân în istoricul browserului.
- Puteți transmite fără efort o cantitate mare de date folosind postarea.
- Puteți păstra datele private.
- Această metodă poate fi folosită pentru a trimite date binare și ASCII.