POST

Metoda HTTP

Specyfikacja metody HTTP POST

Metoda POST żąda, aby zasób docelowy przetwarzał reprezentację zawartą w żądaniu zgodnie z własną specyficzną semantyką zasobu. Na przykład POST jest używany do następujących funkcji (między innymi):

  • Dostarczanie bloku danych, takich jak pola wprowadzone do formularza HTML, do procesu obsługi danych;
  • Wysyłanie wiadomości na tablicę ogłoszeń, grupę dyskusyjną, listę mailingową, blog lub podobną grupę artykułów;
  • Tworzenie nowego zasobu, który nie został jeszcze zidentyfikowany przez serwer źródłowy; oraz
  • Dodawanie danych do istniejącej reprezentacji zasobu.

Serwer źródłowy wskazuje semantykę odpowiedzi, wybierając odpowiedni kod stanu w zależności od wyniku przetwarzania żądania POST; prawie wszystkie kody stanu zdefiniowane w tej specyfikacji mogą zostać odebrane w odpowiedzi na POST (wyjątki to 206 (częściowa zawartość), 304 (nie zmodyfikowany) i 416 (zakres niezadowalający)).

Jeśli jeden lub więcej zasobów zostało utworzonych na serwerze źródłowym w wyniku pomyślnego przetworzenia żądania POST, serwer źródłowy POWINIEN wysłać odpowiedź 201 (Utworzony) zawierającą pole nagłówka Lokalizacja, które zapewnia identyfikator utworzonego zasobu podstawowego (sekcja 7.1.2) oraz reprezentację, która opisuje status żądania, jednocześnie odnosząc się do nowego zasobu (nowych zasobów).

Odpowiedzi na żądania POST mogą być buforowane tylko wtedy, gdy zawierają wyraźne informacje o świeżości (patrz sekcja 4.2.1 [RFC7234]). Buforowanie POST nie jest jednak powszechnie stosowane. W przypadkach, gdy serwer źródłowy chce, aby klient mógł buforować wynik POST w sposób, który może być ponownie wykorzystany przez późniejszy GET, serwer źródłowy MOŻE wysłać odpowiedź 200 (OK) zawierającą wynik i pole nagłówka Content-Location, które ma taką samą wartość jak efektywny URI żądania POST (sekcja 3.1.4.2).

Jeśli wynik przetwarzania POST byłby równoważny reprezentacji istniejącego zasobu, serwer źródłowy MOŻE przekierować agenta użytkownika do tego zasobu, wysyłając odpowiedź 303 (Zobacz inne) z identyfikatorem istniejącego zasobu w polu Lokalizacja. Ma to zalety polegające na dostarczeniu agentowi użytkownika identyfikatora zasobu i przesłaniu reprezentacji za pomocą metody bardziej podatnej na współdzielone buforowanie, choć kosztem dodatkowego żądania, jeśli agent użytkownika nie ma jeszcze reprezentacji w pamięci podręcznej.

Metoda HTTP POST została określona w sekcji 4.3.3 dokumentu RFC 7231 przez Internet Engineering Task Force (IETF) i World Wide Web Consortium (W3C).

Opis metody POST

prace w toku

Przykład dla metody HTTP POST

Request header:
POST /data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537
Accept: application/json
Accept-Language: de-DE,de;q=0.5
Content-Type: application/json
Content-Length: 100
Connection: keep-alive
Request body:
{
  "key": "value",
  "foo": "bar"
}
Response header:
Content-Type: application/json
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache
Location: http://api.example.com/data/123
Response body:
{
  "status": "success",
  "id": 123
}