Ответ
Жизненный цикл HTTP-запроса (Request Lifecycle) — это последовательность этапов от формирования запроса клиентом до получения и обработки ответа.
Основные этапы:
-
Формирование запроса (Client-Side): Клиентское приложение (браузер, мобильное приложение) определяет:
- URL и метод HTTP (GET, POST и т.д.).
- Заголовки (Headers), например,
Authorization,Content-Type. - Тело запроса (Body), если требуется.
-
Отправка запроса (Network): Сформированный HTTP-пакет отправляется через сеть (часто через TCP-соединение) на указанный сервер.
-
Маршрутизация и обработка сервером (Server-Side):
- Маршрутизация: Веб-сервер (например, Nginx, Apache) или фреймворк (Spring, Express) направляет запрос в нужный обработчик (endpoint handler) на основе URL и метода.
- Промежуточное ПО (Middleware): Выполняется дополнительная логика: аутентификация, логирование, парсинг тела запроса.
- Бизнес-логика: Выполняется основной код приложения для обработки запроса (обращение к базе данных, вычисления).
-
Формирование ответа (Server-Side): Сервер создает HTTP-ответ, включающий:
- Код состояния (Status Code):
200 OK,404 Not Found,500 Internal Server Error. - Заголовки ответа (Response Headers).
- Тело ответа (Response Body): Данные (JSON, HTML) или сообщение об ошибке.
- Код состояния (Status Code):
-
Отправка ответа клиенту (Network): Сервер отправляет сформированный ответ обратно клиенту.
-
Обработка ответа клиентом (Client-Side): Клиент получает ответ, проверяет статус-код и, если успешно (
2xx), парсит тело ответа (например, отображает данные на странице или сохраняет их).
Практический пример на Python с библиотекой requests:
import requests
# Этап 1-2: Формирование и отправка GET-запроса
response = requests.get('https://api.github.com/users/octocat')
# Этап 6: Обработка ответа
if response.status_code == 200: # Проверка успешности
data = response.json() # Парсинг JSON-тела ответа
print(f"User login: {data['login']}")
else:
print(f"Request failed with status: {response.status_code}")