Co to jest PUT?
Metoda PUT służy do aktualizacji zasobów dostępnych na serwerze. Zwykle zastępuje to, co istnieje w docelowym adresie URL, na coś innego. Możesz go użyć do stworzenia nowego zasobu lub nadpisania istniejącego. PUT żąda, aby dołączona jednostka była przechowywana pod podanym żądanym identyfikatorem URI (Uniform Resource Identifier).
W tym samouczku dowiesz się:
- Co to jest PUT?
- Co to jest POST?
- Przykład PUT
- Przykład POST
- Różnica między PUT i POST
- Testowanie API z żądaniami PUT
- Testowanie API za pomocą żądań POST
- Zalety metody PUT
- Zalety metody POST
Co to jest POST?
POST to metoda obsługiwana przez protokoły HTTP i
przedstawia, że serwer WWW akceptuje dane zawarte w treści żądanej wiadomości. POST jest często używany przez sieć World Wide Web do wysyłania danych generowanych przez użytkowników na serwer sieciowy lub podczas przesyłania pliku.
KLUCZOWE RÓŻNICE:
- Metoda PUT jest wywoływana, gdy trzeba zmodyfikować pojedynczy zasób, podczas gdy metoda POST jest wywoływana, gdy trzeba dodać zasób podrzędny.
- Odpowiedź metody PUT może być buforowana, ale nie można buforować odpowiedzi metody PUT.
- Możesz użyć zapytania UPDATE w PUT, podczas gdy możesz użyć zapytania tworzenia w POST.
- W metodzie PUT klient decyduje, który zasób URI powinien mieć, aw metodzie POST serwer decyduje, który zasób URI powinien mieć.
- PUT działa tak specyficznie, a POST jako abstrakcyjne.
- 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.
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
Żądanie
PUT /new.html HTTP/1.1Host: example.comContent-type: text/htmlContent-length: 20New File
Odpowiedzi
Jeśli zasób docelowy ma aktualną reprezentację i jest 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 treści).
Jeśli zasób docelowy nie ma żadnej reprezentacji, serwer powinien poinformować użytkownika, wysyłając odpowiedź w kodzie 201 (utworzonym).
HTTP/1.1 201 CreatedContent-Location: /new.html
Przykład POST
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.1Host: abc.exampleContent-Type: application/x-www-form-urlencodedContent-Length: 40field1=value1&field2=value2
Różnica między PUT i POST
Oto ważna różnica między metodą PUT i POST:
POŁOŻYĆ | POCZTA |
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 dołączonej jednostki przechowywanej w podanym identyfikatorze URI żądania. | Ta metoda żąda od serwera akceptacji jednostki zawartej w żądaniu. |
Składnia metody PUT to PUT / pytania / {id-pytania} | Składnia metody POST to POST / questions |
Odpowiedź metody PUT może być zapisana w pamięci podręcznej. | Nie można buforować odpowiedzi metody PUT. |
PUT / vi / juice / orders / 1234 wskazuje, że aktualizujesz zasób, który jest oznaczony jako „1234”. | POST / vi / juice / orders wskazuje, że tworzysz nowy zasób i zwraca 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 tak specyficznie. | POST działa jako abstrakcja. |
Używamy zapytania UPDATE w PUT. | Używamy tworzenia zapytania w POST. |
W metodzie PUT klient decyduje, który zasób URI powinien mieć. | W metodzie POST serwer decyduje, który zasób URI powinien mieć. |
Testowanie API z żądaniami 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 się powiedzie, otrzymasz nowe dane. Ta metoda zakończy się niepowodzeniem, jeśli dane podane 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) Wykonaj żądanie GET dla tego zasobu i zapisz dane w odpowiednim formacie.
Krok 3) Musisz dodać testy, które zapewniają, że żądania POST kończą się niepowodzeniem z niepoprawnymi danymi.
Zalety metody PUT
Oto zalety / zalety korzystania z metody PUT:
- Pomaga w przechowywaniu dostarczonej jednostki pod podanym identyfikatorem URI
- Jeśli podana jednostka już istnieje, możesz wykonać operację aktualizacji lub utworzyć za pomocą tego identyfikatora URI.
- Możesz tworzyć zasoby tyle razy, ile chcesz.
- Tworzenie zasobu metodą PUT jest bardzo proste.
- Nie musisz sprawdzać, czy użytkownik kliknął przycisk przesyłania kilka razy, czy nie.
- Potrafi zidentyfikować podmiot załączony do wniosku.
Zalety metody POST
Oto zalety / zalety korzystania z metody POST:
- Ta metoda pomaga określić identyfikator URI zasobu.
- Określenie nowego nagłówka lokalizacji zasobów jest bardzo łatwe przy użyciu nagłówka lokalizacji.
- Możesz wysłać prośbę o zaakceptowanie jednostki jako nowego podwładnego zasobu, który jest identyfikowany przez identyfikator URI.
- Możesz wysyłać dane generowane przez użytkowników na serwer sieciowy.
- Jest to bardzo przydatne, gdy nie znasz adresu URL, aby zachować jakiekolwiek zasoby.
- Użyj POST, gdy potrzebujesz serwera, który kontroluje generowanie adresów URL twoich zasobów.
- POST to bezpieczna metoda, ponieważ jej żądania nie pozostają w historii przeglądarki.
- Możesz bez wysiłku przesyłać duże ilości danych za pomocą poczty.
- Możesz zachować prywatność danych.
- Ta metoda może służyć do wysyłania danych binarnych oraz danych ASCII.