Можно ли использовать GET для создания нового ресурса

«Можно ли использовать GET для создания нового ресурса» — вопрос из категории API и интеграции, который задают на 27% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Технически возможно использовать GET для создания ресурса, передавая параметры в URL, но это нарушает REST-принципы и считается плохой практикой. GET предназначен для безопасных и идемпотентных операций (чтение данных без побочных эффектов).

Проблемы:

  • GET-запросы кэшируются и логируются, что может привести к случайному дублированию ресурсов
  • Длина URL ограничена (~2KB), что не подходит для больших данных
  • Нарушается семантика HTTP (GET != создание)

Пример плохого подхода:

GET /api/users?name=John&email=john@example.com

Правильно: использовать POST/PUT для создания:

POST /api/users
Body: {"name": "John", "email": "john@example.com"}

Исключение: если операция идемпотентная (например, генерация токена), можно рассмотреть GET, но лучше использовать POST.