PUT vs POST – różnica między nimi
Kluczowe różnice między PUT i POST
- Metoda PUT jest wywoływana, gdy trzeba zmodyfikować pojedynczy zasób, natomiast metoda POST jest wywoływana, gdy trzeba dodać zasób podrzędny.
- Odpowiedzi metodą POST można buforować, ale nie można buforować odpowiedzi metodą PUT.
- Możesz użyć zapytania UPDATE w PUT, natomiast możesz użyć zapytania tworzącego w POST.
- W metodzie PUT klient decyduje, jaki zasób URI powinien posiadać, a w metodzie POST serwer decyduje, jaki zasób URI powinien posiadać.
- PUT działa jako specyficzny, podczas gdy POST działa jako abstrakcyjny.
- Jeśli wyślesz to samo żądanie PUT wiele razy, wynik pozostanie taki sam, ale jeśli wyślesz to samo żądanie POST wiele razy, otrzymasz różne wyniki.
- Metoda PUT jest idempotentna, podczas gdy metoda POST nie jest idempotentna.

Co to jest metoda PUT?
Metoda PUT służy do aktualizacji zasobów dostępnych na serwerze. Zwykle zastępuje wszystko, co istnieje pod docelowym adresem URL, czymś innym. Możesz go użyć do utworzenia nowego zasobu lub nadpisania istniejącego. PUT żąda, aby załączona jednostka była przechowywana pod dostarczonym żądanym identyfikatorem URI (Uniform Resource Identifier).
Co to jest metoda POST?
POST to metoda obsługiwana przez HTTP i
przedstawia, że serwer WWW akceptuje dane zawarte w treści żądanej wiadomości. POST jest często używany w sieci WWW do wysyłania danych generowanych przez użytkownika na serwer sieciowy lub podczas przesyłania pliku.
Różnice między PUT i POST w API REST
Oto ważna różnica między metodą PUT i POST:
PUT | POST |
---|---|
Ta metoda jest idempotentna. | Ta metoda nie jest idempotentna. |
Metoda PUT jest wywoływana, gdy trzeba zmodyfikować pojedynczy zasób, który jest już częścią kolekcji zasobów. | Metoda POST jest wywoływana, gdy musisz dodać zasób podrzędny w kolekcji zasobów. |
RFC-2616 przedstawia, że metoda PUT wysyła żądanie dotyczące zamkniętej jednostki przechowywanej w dostarczonym identyfikatorze URI żądania. | Ta metoda żąda od serwera zaakceptowania jednostki zawartej w żądaniu. |
Składnia metody PUT to PUT /questions/{question-id} | Składnia metody POST to POST /pytania |
Nie można buforować odpowiedzi metody PUT. | Odpowiedź metody POST może być buforowana. |
PUT /vi/juice/orders/1234 wskazuje, że aktualizujesz zasób oznaczony jako „1234”. | POST /vi/juice/orders wskazuje, że tworzysz nowy zasób i zwracasz identyfikator opisujący zasób. |
Jeśli wyślesz to samo żądanie wiele razy, wynik pozostanie taki sam. | Jeśli wyślesz to samo żądanie POST więcej niż jeden raz, otrzymasz różne wyniki. |
PUT działa jako specyficzny. | POST działa jako streszczenie. |
Używamy zapytania UPDATE w PUT. | Używamy zapytania tworzącego w POST. |
W metodzie PUT klient decyduje, jaki zasób URI powinien posiadać. | W metodzie POST serwer decyduje, jaki zasób URI powinien posiadać. |
Przykład PUT
Oto przykład metody PUT na serwerze WWW:
HTTP PUT http://www.google.com/users/234
HTTP PUT http://www.google.com/users/234/accounts/567
PROŚBA
PUT /new.html HTTP/1.1 Host: example.com Content-type: text/html Content-length: 20 <p>New File</p>
Odpowiedzi
Jeżeli zasób docelowy ma aktualną reprezentację i zostanie zmodyfikowany stanem załączonej reprezentacji, to serwer powinien wysłać dwie odpowiedzi. Pierwszy kod odpowiedzi to 200 (OK), a drugi kod odpowiedzi to 204 (Brak zawartości).
Jeśli zasób docelowy nie ma żadnej reprezentacji, serwer powinien poinformować użytkownika, wysyłając odpowiedź z kodem 201 (Utworzono).
HTTP/1.1 201 Created Content-Location: /new.html
Przykład POSTu
Oto przykład metody POST:
HTTP POST http://www.google.com/users
HTTP POST http://www.google.com/users/234/accounts
Formularz korzystający z domyślnego typu zawartości 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
Testowanie API za pomocą żądań PUT
Oto kroki, aby przetestować interfejs API za pomocą żądań PUT:
Krok 1) Zaktualizuj zasoby za pomocą żądania PUT.
Krok 2) Użyj metody GET dla zasobu. Jeśli żądanie PUT zakończy się sukcesem, otrzymasz nowe dane. Ta metoda nie powiedzie się, jeśli dane dostarczone w żądaniu są nieprawidłowe. Dlatego niczego nie zaktualizuje.
Testowanie API za pomocą żądań POST
Oto kroki, aby przetestować interfejs API za pomocą żądań POST:
Krok 1) Utwórz zasób za pomocą żądania POST i upewnij się, że zwraca kod stanu 200.
Krok 2) Utwórz żądanie GET dla tego zasobu i zapisz dane w odpowiednim formacie.
Krok 3) Musisz dodać testy, które zapewnią, że żądania POST nie powiodą się z nieprawidłowymi danymi.
Zalety metody PUT
Oto zalety/korzyści stosowania metody PUT:
- Pomaga w przechowywaniu dostarczonej jednostki pod dostarczonym identyfikatorem URI
- Jeśli podany obiekt już istnieje, możesz wykonać operację aktualizacji lub utworzyć obiekt przy użyciu tego identyfikatora URI.
- Możesz utworzyć zasób tyle razy, ile chcesz.
- Tworzenie zasobu metodą PUT jest bardzo proste.
- Nie musisz sprawdzać, czy użytkownik kliknął przycisk wysyłania kilka razy, czy nie.
- Umożliwia identyfikację podmiotu załączonego do wniosku.
Zalety metody POST
Oto zalety/korzyści stosowania metody POST:
- Ta metoda pomaga określić identyfikator URI zasobu.
- Określenie nowego nagłówka lokalizacji zasobu jest bardzo łatwe przy użyciu nagłówka lokalizacji.
- Można wysłać prośbę o przyjęcie obiektu jako nowego podrzędnego zasobu, który identyfikowany jest poprzez URI.
- Dane wygenerowane przez użytkownika można wysyłać na serwer WWW.
- Jest to bardzo przydatne, gdy nie znasz adresu URL, aby zachować dowolny zasób.
- Użyj POST, jeśli potrzebujesz serwera, który kontroluje generowanie adresów URL Twoich zasobów.
- POST jest bezpieczną metodą, ponieważ jej żądania nie pozostają w historii przeglądarki.
- Za pomocą poczty możesz bez problemu przesłać dużą ilość danych.
- Możesz zachować prywatność danych.
- Tej metody można używać do wysyłania danych binarnych i ASCII.