Какие HTTP-методы REST API идемпотентны? Можно ли передавать запрос/данные в GET и какие есть ограничения? Чем отличаются семейства кодов 4xx и 5xx?

GET, HEAD, PUT, DELETE, OPTIONS и TRACE идемпотентны по HTTP-семантике; POST и PATCH не гарантируют этого. GET обычно передаёт параметры в URL, а семейства 4xx и 5xx обозначают разные стороны ошибки.

Короткий ответ

Что ответить на собеседовании

GET, HEAD, PUT, DELETE, OPTIONS и TRACE идемпотентны по HTTP-семантике; POST и PATCH не гарантируют этого. GET обычно передаёт параметры в URL, а семейства 4xx и 5xx обозначают разные стороны ошибки.

Подробный разбор

Ответ с пояснениями

GET, HEAD, PUT, DELETE, OPTIONS и TRACE идемпотентны по HTTP-семантике; POST и PATCH не гарантируют этого. GET обычно передаёт параметры в URL, а семейства 4xx и 5xx обозначают разные стороны ошибки.

Идемпотентность означает одинаковый предполагаемый эффект повторов, а не идентичный ответ: повтор DELETE может вернуть 404. POST можно сделать безопасным для повторов прикладным idempotency key.

Query-параметры GET подходят для фильтров; содержимое тела GET не имеет общей определённой семантики и может отвергаться посредниками. Практические лимиты URL зависят от инфраструктуры; секретам не место в URL.

4xx указывает на проблему выполнения запроса с точки зрения клиента, например 400, 401, 403, 404. 5xx — на ошибку или неспособность сервера выполнить запрос. Не каждый 5xx безопасно повторять без учёта возможного уже совершённого эффекта.

Источник: www.rfc-editor.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее