Files
frontend-docs/docs/api/01-http.md

87 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
sidebar_position: 1
---
# Протокол HTTP
**HTTP (HyperText Transfer Protocol)** — это протокол прикладного уровня, используемый для передачи данных в сети Интернет. Он является основой для обмена информацией между клиентом (например, веб-браузером) и сервером (например, веб-сайтом). HTTP работает по модели "запрос-ответ": клиент отправляет запрос, а сервер возвращает ответ.
## Основные характеристики HTTP:
1. **Текстовый протокол:**
- HTTP использует текстовый формат для передачи данных, что делает его легко читаемым и отлаживаемым.
2. **Работает поверх TCP/IP:**
- HTTP использует TCP (Transmission Control Protocol) как транспортный протокол для установления соединения между клиентом и сервером.
3. **Статус ответа:**
- Сервер возвращает HTTP-коды состояния, которые указывают на результат выполнения запроса:
- `1xx` — информационные коды (например, `100 Continue`).
- `2xx` — успешные коды (например, `200 OK`, `201 Created`).
- `3xx` — коды перенаправления (например, `301 Moved Permanently`, `302 Found`).
- `4xx` — ошибки клиента (например, `400 Bad Request`, `404 Not Found`).
- `5xx` — ошибки сервера (например, `500 Internal Server Error`, `503 Service Unavailable`).
4. **Методы HTTP:**
- HTTP определяет набор методов (или "глаголов"), которые указывают, какое действие нужно выполнить:
- `GET` — запрос данных от сервера.
- `POST` — отправка данных на сервер для создания ресурса.
- `PUT` — обновление существующего ресурса.
- `DELETE` — удаление ресурса.
- `PATCH` — частичное обновление ресурса.
- `HEAD` — запрос заголовков ответа без тела.
- `OPTIONS` — запрос информации о поддерживаемых методах.
5. **Заголовки (Headers):**
- HTTP-заголовки содержат метаданные о запросе или ответе. Они могут включать информацию о типе содержимого, кэшировании, авторизации и т.д.
- Примеры заголовков:
- `Content-Type` — тип данных (например, `application/json`).
- `Authorization` — данные для аутентификации.
- `User-Agent` — информация о клиенте (например, браузере).
6. **Тело запроса/ответа (Body):**
- Тело содержит данные, которые передаются между клиентом и сервером. Например, в запросе `POST` тело может содержать данные для создания ресурса, а в ответе — данные запрошенного ресурса.
7. **Без состояния (Stateless):**
- Каждый HTTP-запрос обрабатывается независимо от других. Сервер не хранит информацию о предыдущих запросах от клиента.
## Пример HTTP-запроса и ответа:
**Запрос:**
```
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
```
**Ответ:**
```
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
```
## Версии HTTP:
1. **HTTP/1.0:**
- Первая версия, поддерживающая базовые функции.
2. **HTTP/1.1:**
- Наиболее распространенная версия, поддерживающая соединения `keep-alive`, который позволил загружать множество ресурсов в рамках одного соединения, кэширование и другие улучшения.
3. **HTTP/2:**
- Вторая версия, которая добавляет мультиплексирование, сжатие заголовков и другие оптимизации для повышения производительности.
4. **HTTP/3:**
- Новая версия, основанная на протоколе QUIC, которая улучшает скорость и безопасность.
## Где используется HTTP:
- Веб-сайты и веб-приложения.
- RESTful API.
- Мобильные приложения.
- Микросервисы.
## Безопасность:
- **HTTPS (HTTP Secure)** — это защищенная версия HTTP, которая использует шифрование TLS/SSL для защиты данных от перехвата и подделки.
HTTP является фундаментальным протоколом для работы в Интернете и используется практически во всех веб-технологиях.
🚀 **_Источник: DeepSeek_**