HTTP (HyperText Transfer Protocol) є основою для передачі даних в Інтернеті. Він визначає, як структуруються і передаються запити та відповіді між клієнтами (наприклад, браузерами) та серверами.
У цій статті ми розглянемо два важливі компоненти HTTP:
- HTTP методи: Визначають тип операції, яку потрібно виконати.
- HTTP заголовки: Містять додаткові метадані про запит чи відповідь.
■ HTTP методи
HTTP методи визначають дію, яку клієнт хоче виконати з ресурсом. Нижче наведено найбільш використовувані методи:
1. GET
- Мета: Отримати інформацію з сервера.
- Особливості:
Безпечний та ідемпотентний (повторні запити дають той самий результат).
Не має тіла запиту; параметри передаються у рядку запиту URL. - Приклад:
GET /api/users?name=JohnDoe HTTP/1.1
Host: example.com
Server Response:http
HTTP/1.1 200 OK
Content-Type: application/json{
"id": 1,
"name": "John Doe"
}
2. POST
- Мета: Надіслати дані для обробки на вказаний ресурс (наприклад, створення нових записів).
Особливості: - Не ідемпотентний (повторні запити можуть створити кілька ресурсів).
Дані передаються в тілі запиту. - Приклад:
httpPOST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json{
"name": "Jane Doe",
"email": "[email protected]"
}
Server Response:http
Copy code
HTTP/1.1 201 Created
Location: /api/users/2
3. PUT
- Мета: Оновити ресурс або створити його, якщо він не існує.
- Особливості: Ідемпотентний.
- Приклад:
PUT /api/users/2 HTTP/1.1
Host: example.com
Content-Type: application/json{
"name": "Jane Doe Updated"
}
4. DELETE
- Мета: Видалити ресурс з сервера.
- Особливості: Ідемпотентний.
- Приклад:
http
DELETE /api/users/2 HTTP/1.1
Host: example.com
5. HEAD
- Мета: Схоже на GET, але лише отримує заголовки без тіла відповіді.
- Приклад:
http
HEAD /api/users HTTP/1.1
Host: example.com
6. OPTIONS
- Мета: Описує варіанти комунікації з ресурсом.
- Приклад:
http
OPTIONS /api/users HTTP/1.1
Host: example.com
Server Response: http
Allow: GET, POST, PUT, DELETE
7. PATCH
- Мета: Частково оновити ресурс.
- Приклад:
http
PATCH /api/users/2 HTTP/1.1
Host: example.com
Content-Type: application/json{
"email": "[email protected]"
}
HTTP Заголовки
■ HTTP заголовки містять інформацію про запит чи відповідь. Вони поділяються на:
1. Загальні заголовки
Надають інформацію про запит або відповідь, не пов'язану з конкретним вмістом.
- Приклад:
http
Date: Fri, 13 Jan 2025 10:00:00 GMT
Connection: keep-alive
2. Заголовки запиту
Містять метадані про клієнта або запит.
● Загальні заголовки:
- Host: Визначає домен сервера.
- User-Agent: Надає інформацію про клієнтське програмне забезпечення.
- Accept: Вказує типи медіа, які клієнт може обробляти.
- Приклад:
http
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0)
Accept: application/json
3. Заголовки відповіді
Надають інформацію про сервер та повернений ресурс.
- Загальні заголовки:
Server: Визначає програмне забезпечення сервера. - Content-Type: Вказує формат тіла відповіді.
- Приклад:
http
Server: Apache/2.4.46 (Ubuntu)
Content-Type: application/json
4.
■ Заголовки сутностей
Надають інформацію про вміст ресурсу.
- Загальні заголовки:
Content-Length: Розмір тіла відповіді в байтах.
Content-Encoding: Вказує, яке стиснення використовувалося для ресурсу. - Приклад:
http
Content-Length: 348
Content-Encoding: gzip
- Практичний приклад
Ось повний приклад HTTP запиту та відповіді:
- Запит:
http
POST /api/login HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 58{
"username": "johndoe",
"password": "12345"
}
- Відповідь:
http
HTTP/1.1 200 OK
Content-Type: application/json
Set-Cookie: sessionId=abc123; Path=/; HttpOnly{
"message": "Login successful",
"userId": 1
}
Висновок
Розуміння HTTP заголовків та методів є важливим для розробників та усіх, хто працює з веб-технологіями. Вони є основою комунікації між клієнтами та серверами, що дозволяє виконувати все — від простого завантаження веб-сторінок до складних API взаємодій. Правильне використання цих елементів може оптимізувати продуктивність додатків, підвищити безпеку та покращити досвід користувачів.
Перекладено з: The HTTP Headers and Methods: Introduction to HTTP