Вопрос с собеседования · Тестирование (QA)

Какие HTTP-методы вы знаете? Чем GET отличается от POST?

JuniorКлиент-сервер и веб
Ещё спрашивают так:
  • Что такое идемпотентность HTTP-метода?
  • Чем PUT отличается от PATCH?
Коротко

GET — получить данные, POST — создать или отправить, PUT — заменить целиком, PATCH — изменить частично, DELETE — удалить.

  • GET передаёт параметры в URL и не должен менять данные; POST — в теле запроса
  • Идемпотентный метод — повторный вызов даёт тот же эффект: GET, PUT, DELETE — да, POST — нет

А ещё Отсюда тест: повторная отправка формы (двойной клик) не должна создавать дубль

Подробно

Основные методы в REST API:

  • GET — получить ресурс. Параметры — в строке запроса (?page=2). Безопасный — не меняет данные; ответ можно кэшировать; URL с параметрами остаётся в истории и логах, поэтому пароли так не передают.
  • POST — создать ресурс или выполнить действие. Данные — в теле запроса.
  • PUT — заменить ресурс целиком данными из запроса.
  • PATCH — изменить отдельные поля.
  • DELETE — удалить.
  • Реже: HEAD (только заголовки), OPTIONS (какие методы доступны, используется браузером для CORS).

Идемпотентность — повторный одинаковый запрос не меняет результат после первого. GET, PUT, DELETE идемпотентны: удалить уже удалённое — тот же итог. POST нет: два одинаковых POST создадут два заказа.

Для тестировщика это источник проверок: двойная отправка формы, повтор запроса при плохой сети, кнопка «назад» после оплаты, GET-запрос, который вдруг меняет данные.

Пример

GET /api/orders/15 — получить заказ. POST /api/orders с телом {"items": [...]} — создать заказ. PATCH /api/orders/15 с {"status": "cancelled"} — отменить. Проверка: отправить POST дважды быстро — должен создаться один заказ или второй запрос должен быть отклонён.

Что хотят услышать

  • Основные методы и их назначение.
  • Где передаются данные в GET и POST.
  • Идемпотентность и её практическое значение.
  • PUT против PATCH — плюс.

Частые ошибки

  • «POST безопаснее GET, потому что данные спрятаны» — без HTTPS они видны так же.
  • Не знать, что такое идемпотентность.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓GET читает, POST создаёт; POST не идемпотентен
  • ✗POST идемпотентен, а PUT — нет, поэтому повторная отправка формы всегда безопасна
  • ✗GET может менять данные — главное, чтобы параметры были в URL
  • ✗GET передаёт параметры в теле запроса, POST — в URL

Что спросят дальше

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования