HTTP (HyperText Transfer Protocol) — это, если дословно, протокол передачи гипертекста. Простыми словами, гипертекст – это текст + теги. Сегодня HTTP – самый популярный протокол интернета и в целом интеграций через API.
Несмотря на название, через протокол можно передавать любые данные. Протокол есть набор правил, определяющих, как обмениваться данными. Благодаря своей простоте и гибкости, HTTP используется практически повсеместно при проектировании API систем и сервисов.
Основой HTTP является технология «клиент-сервер», есть две роли: сервер и клиент.
➖ Клиент инициируют соединение и посылает запрос на сервер
➖ Сервер обрабатывает запрос и посылает ответ клиенту.
Структура HTTP-сообщения всегда одинакова:
🔹 Стартовая строка, в которой определяется адрес, по которому отправляется запрос, и тип сообщения. Указывается метод, который определяет действия при получении этого сообщения (GET, POST и т.д.)
🔹 Заголовки (Headers), в которых прописаны определённые параметры сообщения. Например, может быть напрямую задан язык.
🔹 Тело запроса (Request Body), текст сообщения — данные, которые передаются. Например, файлы, отправляемые на сервер.
Пример запроса:
GET /users/octocat HTTP/1.1Процесс работы HTTP-протокола
Host: api.github.com
User-Agent: curl/7.64.1
Accept: */*
1️⃣ Клиент формирует и отправляет запрос на сервер по адресу (URL), который может быть введен в браузере или сгенерирован автоматически.
2️⃣ Запрос передается по сети с помощью других протоколов, например TCP/IP, которые разбивают его на пакеты данных.
3️⃣ Сервер получает запрос, обрабатывает его и отправляет ответ, который также передается по сети в виде пакетов данных.
4️⃣ Клиент получает ответ и отображает результат, например веб-страницу в формате HTML.
Структура ответа в HTTP состоит всё из тех же частей, что и запрос:
🔸 Cтартовая строка содержит версию протокола, код состояния и текст результата запроса, например,
HTTP/1.1 200 OK
🔸 Заголовки содержат дополнительную информацию о ответе, такую как тип и длина контента, дата и время, куки, кэширование и т.д. Например:
Content-Type: text/html; charset=utf-8🔸 Тело содержит данные ответа, например HTML-документ, изображение, JSON-объект и т.д.
Content-Length: 125829
Date: Mon, 29 Nov 2021 10:24:06 GMT
Пример ответа
HTTP/1.1 200 OK📎 Материалы по теме
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Content-Length: 29769
Content-Type: text/json
{
"isFree": false,
"price": 200
}
1. Стандарт HTTP 1.1 — RFC 2616
2. Статья Что такое протокол HTTP и почему на нём работают почти все сайты
3. Статья на сайте Backend interview
4. Обзор протокола HTTP — Mozilla
5. HTTP-запросы: структура, методы, строка статуса и коды состояния — Академия Selectel
6. Самые распространённые HTTP-заголовки
В продолжение к посту кидаем полезные шпаргалки 👇
#интеграции #api