Materiał ten stanowi część serii „Wprowadzenie do rozwoju przedsiębiorstwa”. Poprzednie artykuły:
Cześć! Dzisiaj zrozumiemy protokoły HTTP i HTTPS. Ale najpierw wyjaśnijmy jedną kwestię: mówimy o protokołach przesyłania danych w sieci w warstwie aplikacji modelu OSI. Jak pamiętacie, model OSI omawialiśmy w jednym z poprzednich artykułów. A jeśli nie pamiętasz, to tutaj .
Warto od razu zaznaczyć, że protokół HTTP składa się wyłącznie z tekstu. Cóż, nas najbardziej interesuje struktura, w której ten tekst się mieści. Każda wiadomość składa się z trzech części:
Co to jest protokół przesyłania danych
Tak nazywa się ogólnie przyjęta umowa, dzięki której twórcy różnych usług przesyłają informacje w jednej formie. Na przykład, korzystając z przeglądarki Google Chrome, możesz uzyskać informacje zarówno z Facebooka, jak i Twittera, ponieważ programiści przesyłają je za pomocą standardowego protokołu HTTP, a Twoja przeglądarka może je przetworzyć. Jednolite zasady są również bardzo wygodne dla samych programistów po stronie serwera: istnieje wiele bibliotek, które mogą konwertować informacje za Ciebie i wysyłać je przy użyciu wymaganego protokołu. HTTP został pierwotnie pomyślany jako protokół do przesyłania stron HTML. Tak było przez długi czas, ale obecnie programiści często przesyłają za jego pośrednictwem zarówno ciągi znaków, jak i pliki multimedialne. Ogólnie rzecz biorąc, protokół ten jest wszechstronny i elastyczny, a także naprawdę łatwy w użyciu. Teraz zastanówmy się, jak to zrobić.
Struktura HTTP
Warto od razu zaznaczyć, że protokół HTTP składa się wyłącznie z tekstu. Cóż, nas najbardziej interesuje struktura, w której ten tekst się mieści. Każda wiadomość składa się z trzech części:
- Linia startowa — definiuje dane serwisowe.
- Nagłówki - opis parametrów wiadomości.
- Treść wiadomości (Body) - dane wiadomości. Należy oddzielić od nagłówków pustą linią.
Jak wygląda proste żądanie HTTP
GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Linia startowa zawiera:
- GET – metoda żądania;
- / — ścieżka żądania (ścieżka);
- HTTP/1.1 - wersja protokołu przesyłania danych.
- Host – host, do którego kierowane jest żądanie;
- User-Agent to klient wysyłający żądanie.
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
Żądanie jest wysyłane do javarush.com/user/create/json, wersja protokołu to HTTP/1.1. Accept określa, jakiego formatu odpowiedzi oczekuje klient, Content-Type określa, w jakim formacie wysyłana jest treść wiadomości. Długość treści - liczba znaków w treści. Żądanie HTTP może zawierać wiele różnych nagłówków. Więcej szczegółów można znaleźć w specyfikacji protokołu .
Odpowiedzi HTTP
Po otrzymaniu żądania serwer przetwarza je i wysyła odpowiedź do klienta:HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
Linia początkowa odpowiedzi zawiera wersję protokołu (HTTP/1.1), kod stanu (200), opis stanu (OK). Nagłówki wskazują rodzaj i długość treści. Treść odpowiedzi zawiera kod HTML, który przeglądarka wciągnie na stronę HTML.
Kody stanu odpowiedzi
Z treścią wiadomości i nagłówkami wszystko jest jasne, ale warto powiedzieć kilka słów o kodach statusów. Kody statusu odpowiedzi składają się zawsze z trzech cyfr, a pierwsza cyfra kodu wskazuje kategorię odpowiedzi:- 1xx - informacyjny. Żądanie zostało odebrane, serwer jest gotowy do kontynuowania;
- 2xx – udało się. Żądanie zostało przyjęte, zrozumiane i przetworzone;
- 3xx - przekierowanie. Aby przetworzyć żądanie, należy wykonać następujące kroki;
- 4xx - błąd klienta. Żądanie zawiera błędy lub jest niezgodne z protokołem;
- 5xx - błąd serwera. Serwer nie był w stanie przetworzyć żądania, chociaż zostało ono poprawnie utworzone;
- 200 OK — żądanie zostało przyjęte i pomyślnie przetworzone;
- 201 Utworzono — żądanie zostało przyjęte i pomyślnie przetworzone, co spowodowało utworzenie nowego zasobu lub jego instancji;
- 301 Przeniesiony na stałe – żądany zasób został przeniesiony na stałe, a kolejne żądania do niego muszą następować pod nowym adresem;
- 307 Temporary Redirect – zasób został tymczasowo przeniesiony. Na razie możesz uzyskać do niego dostęp za pomocą automatycznego przekierowania;
- 403 Zabronione – żądanie jest jasne, ale wymagana jest autoryzacja;
- 404 Not Found – serwer nie znalazł zasobu pod tym adresem;
- 501 Nie zaimplementowano – serwer nie obsługuje funkcji odpowiedzi na to żądanie;
- 505 Wersja HTTP nieobsługiwana — serwer nie obsługuje określonej wersji protokołu HTTP.
GO TO FULL VERSION