Pełne, ale skopiowane ze specyfikacji metody HTTP 1.1 pod adresem http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
9.3 GET
Metoda GET oznacza pobieranie wszelkich informacji (w formie encji) identyfikowanych przez identyfikator URI żądania. Jeśli identyfikator URI żądania odnosi się do procesu generowania danych, to dane wytworzone zostaną zwrócone jako byt w odpowiedzi, a nie tekst źródłowy procesu, chyba że tekst ten jest wynikiem procesu.
Semantyka metody GET zmienia się na „warunkowy GET”, jeśli komunikat żądania zawiera pole nagłówka If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match lub If-Range. Warunkowa metoda GET wymaga, aby jednostka została przesłana tylko w okolicznościach opisanych w polach warunkowych nagłówków. Warunkowa metoda GET ma na celu ograniczenie niepotrzebnego użycia sieci, umożliwiając odświeżanie buforowanych jednostek bez konieczności wielokrotnego żądania lub przesyłania danych przechowywanych już przez klienta.
Semantyka metody GET zmienia się na „częściowy GET”, jeśli komunikat żądania zawiera pole nagłówka Range. Częściowe żądanie GET wymaga przeniesienia tylko części jednostki, jak opisano w sekcji 14.35. Metoda częściowego GET ma na celu zmniejszenie niepotrzebnego użycia sieci, umożliwiając ukończenie częściowo pobranych jednostek bez przesyłania danych przechowywanych już przez klienta.
Odpowiedź na żądanie GET jest buforowalna, tylko jeśli spełnia wymagania dotyczące buforowania HTTP opisane w sekcji 13.
Uwagi dotyczące bezpieczeństwa w przypadku formularzy znajdują się w sekcji 15.1.3.
9.5 POST
Metoda POST służy do żądania, aby serwer źródłowy zaakceptował jednostkę zawartą w żądaniu jako nowego podwładnego zasobu określonego przez identyfikator URI żądania w wierszu żądania. POST został zaprojektowany, aby umożliwić jednolitą metodę obejmującą następujące funkcje:
- Annotation of existing resources;
- Posting a message to a bulletin board, newsgroup, mailing list,
or similar group of articles;
- Providing a block of data, such as the result of submitting a
form, to a data-handling process;
- Extending a database through an append operation.
Rzeczywista funkcja wykonywana metodą POST jest określana przez serwer i zwykle zależy od URI żądania. Wysłana jednostka jest podporządkowana temu identyfikatorowi URI w taki sam sposób, w jaki plik jest podporządkowany katalogowi zawierającemu go, artykuł z wiadomościami jest podporządkowany grupie dyskusyjnej, do której jest wysyłany, lub rekord jest podporządkowany bazie danych.
Czynność wykonana metodą POST może nie skutkować zasobem, który można zidentyfikować za pomocą identyfikatora URI. W takim przypadku albo 200 (OK), albo 204 (Brak treści) jest odpowiednim statusem odpowiedzi, w zależności od tego, czy odpowiedź zawiera encję, która opisuje wynik.
Jeśli zasób został utworzony na serwerze źródłowym, odpowiedzią POWINNA być 201 (Utworzony) i zawierać byt opisujący stan żądania i odnoszący się do nowego zasobu oraz nagłówek Lokalizacji (patrz sekcja 14.30).
Odpowiedzi na tę metodę nie są buforowane, chyba że odpowiedź zawiera odpowiednie pola nagłówka Cache-Control lub Expires. Jednak odpowiedź 303 (Zobacz inne) może być użyta do nakierowania agenta użytkownika na pobranie zasobu buforowanego.
Żądania POST MUSZĄ być zgodne z wymogami dotyczącymi przesyłania komunikatów określonymi w sekcji 8.2.
Informacje na temat bezpieczeństwa znajdują się w sekcji 15.1.3.
9,6 PUT
Metoda PUT żąda, aby zamknięta jednostka była przechowywana pod dostarczonym URI żądania. Jeśli identyfikator URI żądania odnosi się do już istniejącego zasobu, dołączony byt MUSI być uważany za zmodyfikowaną wersję tego, który znajduje się na serwerze źródłowym. Jeśli identyfikator URI żądania nie wskazuje na istniejący zasób, a ten identyfikator URI może zostać zdefiniowany jako nowy zasób przez żądającego agenta użytkownika, serwer źródłowy może utworzyć zasób z tym identyfikatorem URI. Jeśli zostanie utworzony nowy zasób, serwer źródłowy MUSI poinformować klienta użytkownika za pomocą odpowiedzi 201 (Utworzono). Jeśli istniejący zasób zostanie zmodyfikowany, POWINNY zostać wysłane kody odpowiedzi 200 (OK) lub 204 (brak treści), aby wskazać pomyślne zakończenie żądania. Jeśli nie można utworzyć lub zmodyfikować zasobu za pomocą identyfikatora URI żądania, POWINNA zostać podana odpowiednia odpowiedź na błąd, która odzwierciedla charakter problemu. Odbiorca jednostki NIE MOŻE zignorować żadnych nagłówków Content- * (np. Content-Range), których nie rozumie ani nie wdraża, i MUSI zwrócić odpowiedź 501 (Nie zaimplementowano) w takich przypadkach.
Jeśli żądanie przechodzi przez pamięć podręczną, a identyfikator URI żądania identyfikuje jedną lub więcej aktualnie buforowanych jednostek, wpisy MUSZĄ być traktowane jako nieaktualne. Odpowiedzi na tę metodę nie są buforowane.
Podstawowa różnica między żądaniami POST i PUT znajduje odzwierciedlenie w innym znaczeniu URI żądania. Identyfikator URI w żądaniu POST identyfikuje zasób, który będzie obsługiwał zamknięty obiekt. Ten zasób może być procesem akceptującym dane, bramą do innego protokołu lub osobnym podmiotem, który przyjmuje adnotacje. W przeciwieństwie do tego, URI w żądaniu PUT identyfikuje encję zawartą w żądaniu - agent użytkownika wie, jaki jest URI, a serwer NIE MOŻE próbować zastosować żądania do jakiegoś innego zasobu. Jeśli serwer chce zastosować żądanie do innego identyfikatora URI,
MUSI wysłać odpowiedź 301 (Moved Permanently); klient użytkownika MOŻE następnie podjąć własną decyzję dotyczącą tego, czy przekierować żądanie.
Jeden zasób MOŻE być identyfikowany przez wiele różnych identyfikatorów URI. Na przykład artykuł może mieć identyfikator URI do identyfikowania „bieżącej wersji”, który jest niezależny od identyfikatora URI identyfikującego każdą konkretną wersję. W takim przypadku żądanie PUT dotyczące ogólnego identyfikatora URI może spowodować zdefiniowanie kilku innych identyfikatorów URI przez serwer pochodzenia.
HTTP / 1.1 nie określa, w jaki sposób metoda PUT wpływa na stan serwera źródłowego.
Żądania PUT MUSZĄ spełniać wymagania dotyczące przesyłania wiadomości określone w sekcji 8.2.
O ile nie określono inaczej dla konkretnego nagłówka encji, nagłówki encji w żądaniu PUT POWINNY być stosowane do zasobu utworzonego lub zmodyfikowanego przez PUT.
9.7 USUŃ
Metoda DELETE żąda, aby serwer pochodzenia usunął zasób zidentyfikowany przez URI żądania. Ta metoda MOŻE zostać zastąpiona przez interwencję człowieka (lub w inny sposób) na serwerze źródłowym. Nie można zagwarantować klientowi, że operacja została wykonana, nawet jeśli kod statusu zwrócony z serwera źródłowego wskazuje, że akcja została wykonana pomyślnie. Jednak serwer NIE POWINIEN wskazywać sukcesu, chyba że w chwili udzielenia odpowiedzi zamierza usunąć zasób lub przenieść go w niedostępną lokalizację.
Pomyślna odpowiedź POWINNA wynosić 200 (OK), jeśli odpowiedź zawiera jednostkę opisującą status, 202 (Zaakceptowana), jeśli akcja nie została jeszcze podjęta, lub 204 (Brak treści), jeśli akcja została podjęta, ale odpowiedź nie obejmuje jednostka.
Jeśli żądanie przechodzi przez pamięć podręczną, a identyfikator URI żądania identyfikuje jedną lub więcej aktualnie buforowanych jednostek, wpisy MUSZĄ być traktowane jako nieaktualne. Odpowiedzi na tę metodę nie są buforowane.