update state, api, arch
This commit is contained in:
88
docs/api/01-http.md
Normal file
88
docs/api/01-http.md
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
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 является фундаментальным протоколом для работы в Интернете и используется практически во всех веб-технологиях.
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user