Протокол HTTP було розроблено в 1990-х роках для створення першого інтерактивного текстового веб-браузера. За ці роки протокол змінювався і вдосконалювався, ставав гнучкішим і поступово перетворився на сучасний інтернет. У статті розглянемо принцип роботи протоколу та що важливо знати про нього розробнику.
Абревіатура HTTP розшифровується як HyperText Transfer Protocol - протокол передачі гіпертексту. Дізнаємося принципи роботи на версії протоколу - HTTP 1.1, її специфікація описана у документі RFC 2616.
У своїй роботі протокол використовує клієнт-серверну структуру передачі даних.
Користувач відкриває додаток і формує свій запит, потім браузер надсилає його на сервер. Запит обробляється на сервері, де формується відповідь і надсилається користувачеві. Далі клієнт може надсилати нові запити, які будуть аналогічно оброблені.
HTTP забезпечує роботу інтернету. З його допомогою вирішується важливе завдання - обмін даними між веб-браузером і веб-сервером. Крім цього, протокол використовують як "транспорт" для передавання інформації іншим протоколам, наприклад, таким як SOAP, XML-RPC і WebDAV.
👉 Основні складові HTTP:
тіло запиту і тіло відповіді;
заголовки запиту і відповіді;
метод запиту;
URL і параметра запиту;
код відповіді.
HTTP-запит складається зі стартової строки, заголовків та тіла запиту.
Стартова строка містить назву методу, адресу (URI) і версію протоколу. Наприклад, вона може бути такою:
GET /index.html HTTP/1.1
Метод передає інформацію серверу про те, що користувач хоче отримати або зробити. Наприклад, запит, що починається з GET, означає, що клієнт хоче отримати інформацію (get, англ. - отримувати).
Браузер надсилає HTTP-запит
GET - отримання інформації з сервера.
Як інформація виступає все, що є на сервері, наприклад, відео, зображення, шрифти, CSS-файл, HTML-розмітка або JSON-дані та багато іншого.
POST - створення нового запису на сервері.
Один із небагатьох запитів до сервера, який обов'язково має містити тіло.
PUT - перезапис наявної інформації на сервері.
Наприклад, ви написали пост, а потім вирішили його повністю змінити. Для цього потрібно підготувати актуальний текст і зробити запит PUT із новим постом, який повністю замінить попередній.
DELETE - видалення наявної інформації на сервері.
Адреса, або Уніфікований ідентифікатор ресурсів (англ. Uniform Resource Identifier, URI) - це рядок літер, які однозначно ідентифікують нашу сторінку.
У відповіді також є стартова строка. Вона містить статусний код, який показує успішність виконання запиту. Наприклад, 200 OK означає успішне виконання запиту, тоді як 404 Not Found означає, що запитаний ресурс не знайдено.
HTTP-запити та відповіді складаються із заголовків і тіла повідомлення.
Заголовки дають браузеру додаткові відомості та допомагають йому відображати контент.
Приклад загального заголовка для більшості запитів:
Content-Type: text/html; charset=UTF-8
Content-Length: 208
Перший заголовок, Content-Type, говорить браузеру, який тип документа він відправляє назад. Найпоширеніший тип - text/html, тому що всі веб-сторінки є текстовими файлами HTML. Також часто зустрічаються такі типи, як image/png - зображення, video/mpeg - відео, script/javascript - скрипт та інші. Також у цьому заголовку можуть бути вказані додаткові відомості, наприклад, кодування charset=UTF-8
Заголовок Content-length інформує про довжину документа в байтах, що допомагає браузеру розрахувати час завантаження файлу.
Тіло HTTP-відповіді містить фактичний запитаний документ. Наприклад, сторінка являє собою простий HTML-файл:
<!DOCTYPE html>
<html lang="uk">
<head>
<title>Курс PHP для початківців Online: PHP (ПХП) навчання з нуля | Школа Hillel</title>
</head>
<body>
<h1>Онлайн-курс<br><strong> PHP Basic</strong></h1>
<span>Basic level</span>
</body>
</html>
Щоб відвідати інтернет-ресурси, користувач використовує додаток браузера. Клієнт вводить у браузері URL - Uniform Resource Locator або "Уніфікований Покажчик Ресурсу". Усі URL, які починаються з http або https, дають сигнал браузеру, що необхідно використовувати HTTP.
URL в адресному рядку
Код відповіді або код стану HTTP - це цифровий код, який повертається HTTP-сервером і позначає виконання або невиконання запиту клієнта.
Специфікація HTTP 1.1 визначає 40 різних кодів. Кожен код стану позначений числовим ідентифікатором у діапазоні від 100 до 599.
Основні коди відповіді:
2xx - запит успішно виконано, наприклад, 200 OK.
3xx - перенаправлення, тобто для виконання запиту необхідні додаткові дії, наприклад, 301 Moved Permanently.
4xx - помилка, пов'язана із запитом клієнта, наприклад, 404 Not Found.
5xx - помилка, пов'язана із сервером, наприклад, 500 Internal Server Error.
Код відповіді - це важливий спосіб передачі повідомлень між клієнтом і сервером у межах протоколу HTTP. Повний список кодів можна знайти тут: "Усі HTTP-статуси".
Розуміння роботи протоколу HTTP допоможе розібратися з тим, як загалом працює інтернет і передача даних.
Фронтендери працюють із даними, які передаються різними протоколами. Важливо розуміти, як все влаштовано, щоб вміти вирішувати типові завдання.
Обов'язково знати:
Основні методи HTTP: GET, POST, PUT, DELETE.
Формат запитів і відповідей.
Статуси HTTP-кодів - 200 OK, 404 Not Found, 500 Internal Server Error та інші.
Особливості роботи з безпечними з'єднаннями HTTPS.
HTTP використовується в різних технологіях і мовах програмування. Його застосовують у веб-розробці для надсилання запитів до сервера й отримання даних. Також протокол бере участь у роботі з REST API - для надсилання запитів на отримання або зміни даних із сервера.
Як ще розробник застосовує HTTP:
Використання HTTP-бібліотек: багато мов програмування, наприклад, Java, JavaScript та інші, мають бібліотеки, які дають змогу легко надсилати HTTP-запити й обробляти відповіді.
Використання API: багато сайтів і служб надають API, які дають змогу отримувати дані з їхніх систем через HTTP-запити.