REST использует стандартные HTTP-методы как глаголы, действующие на ресурсы. Распространённое соответствие с CRUD (Create, Read, Update, Delete):
REST использует стандартные HTTP-методы как глаголы, действующие на ресурсы. Распространённое соответствие с CRUD (Create, Read, Update, Delete):
| CRUD | Method | Типичное использование |
|---|
| Create | POST | Добавить новый ресурс в коллекцию |
| Read | GET | Получить ресурс или список |
| Update (полное) | PUT | Полностью заменить ресурс |
| Update (частичное) | PATCH | Изменить некоторые поля |
| Delete | DELETE | Удалить ресурс |
POST /users HTTP/1.1
Content-Type: application/json
{ "name": "Ann", "email": "[email protected]" }
HTTP/1.1 201 Created
Location: /users/42
{ "id": 42, "name": "Ann", "email": "[email protected]" }
PUT /users/42 отправляет всё представление и заменяет его; PATCH /users/42 отправляет только изменяемые поля (например, { "email": "[email protected]" }).
Это два разных свойства:
GET, HEAD, OPTIONS безопасны.GET, PUT, DELETE, HEAD идемпотентны.Method Safe? Idempotent?
GET yes yes
HEAD yes yes
PUT no yes (replacing with the same body twice = same result)
DELETE no yes (deleting twice = still deleted)
PATCH no no* (depends on the patch; not guaranteed)
POST no no (posting twice usually creates two resources)
Интервьюеры спрашивают это, чтобы понять, достаточно ли хорошо вы понимаете семантику HTTP, чтобы строить надёжные API. Различие safe/idempotent не академическое: оно напрямую определяет, что разрешено делать клиентам, прокси и CDN. Safe-методы можно свободно кэшировать и предзагружать; idempotent-методы можно автоматически повторять после сетевого таймаута без риска дублирования побочных эффектов — поэтому клиент может безопасно повторить PUT или DELETE, но должен быть осторожен с повтором POST (он может создать два заказа). Классическая ошибка — использовать GET для запуска побочных эффектов (например, GET /users/42/delete), что ломает кэширование и позволяет краулерам случайно менять данные. Выбор правильного метода — и соблюдение его контракта safety и idempotency — это то, что делает API предсказуемым и безопасным для построения вокруг него инструментов.
Библиотека вопросов для IT-собеседований с подробными ответами — от Junior до Senior.
Поддержать