QA
Легкий
Какие HTTP-методы существуют? Что такое идемпотентность?
HTTP-методы и идемпотентность
Основные методы:
| Метод | Назначение | Тело запроса | Идемпотентный |
|---|---|---|---|
| GET | Получить ресурс | Нет | Да |
| POST | Создать ресурс | Да | Нет |
| PUT | Заменить ресурс | Да | Да |
| PATCH | Частично изменить | Да | Нет* |
| DELETE | Удалить ресурс | Нет | Да |
| HEAD | Получить headers | Нет | Да |
| OPTIONS | Получить опции | Нет | Да |
Идемпотентность
Определение: Многократное выполнение даёт тот же результат.
Идемпотентный:
PUT /users/1 {name: "Alice"}
# 1 раз: user.name = "Alice"
# 10 раз: user.name = "Alice" (тот же результат)
DELETE /users/1
# 1 раз: пользователь удалён
# 10 раз: тот же результат (user не существует)
НЕ идемпотентный:
POST /orders {item: "book"}
# 1 раз: создан 1 заказ
# 10 раз: создано 10 заказов!
GET vs POST:
GET /users?id=1
- Получение данных
- Параметры в URL
- Кэшируется
- Идемпотентный
- Безопасный (не меняет данные)
POST /users
- Создание данных
- Тело запроса
- Не кэшируется
- Не идемпотентный
PUT vs PATCH:
PUT /users/1
{
"name": "Alice",
"email": "alice@mail.com",
"age": 30
}
# Полная замена — все поля обязательны
PATCH /users/1
{
"email": "new@mail.com"
}
# Частичное обновление — только изменяемые поля
Коды ответов:
2xx — Успех
200 OK
201 Created
204 No Content
3xx — Редирект
301 Moved Permanently
302 Found
304 Not Modified
4xx — Ошибка клиента
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
409 Conflict
5xx — Ошибка сервера
500 Internal Server Error
502 Bad Gateway
503 Service Unavailable
Safe vs Idempotent:
| Метод | Safe | Idempotent |
|---|---|---|
| GET | Да | Да |
| POST | Нет | Нет |
| PUT | Нет | Да |
| DELETE | Нет | Да |
Safe — не изменяет состояние сервера
Idempotent — повторный вызов не меняет результат
Похожие вопросы
Готовитесь к собеседованию?
ENIGMA AI — невидимый ИИ-помощник для технических интервью
Попробовать бесплатно