Ответ вслух Junior HTTP для тестировщика спрашивают часто обновлено

Чем GET отличается от POST

Вопрос

Расскажи, чем GET отличается от POST и что из этого важно для тестирования.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

GET предназначен для чтения: он безопасный и идемпотентный, параметры передаются в query-строке, ответ можно кешировать. POST отправляет данные на обработку, обычно создаёт ресурс, тело в нём есть, и он не идемпотентен: два одинаковых POST дадут два заказа.

Что должно прозвучать в ответе

  • GET читает данные, POST отправляет данные на обработку, обычно создаёт ресурс

  • GET безопасный и идемпотентный, POST ни то, ни другое

  • Параметры GET идут в URL (видны в логах и истории), данные POST в теле

  • GET-ответы можно кешировать, POST обычно нет

  • Проверки: повторный POST создаёт дубль, GET не меняет данные, чувствительное не уходит в URL

Что могут спросить следом

  • Почему пароль нельзя передавать в query-параметре?
  • Как защититься от двойного POST при повторе?
  • Есть ли у URL ограничение длины?

Разбор

GET предназначен для чтения: он безопасный и идемпотентный, параметры передаются в query-строке, ответ можно кешировать. POST отправляет данные на обработку, обычно создаёт ресурс, тело в нём есть, и он не идемпотентен: два одинаковых POST дадут два заказа. Для тестировщика отсюда проверки. Первое: GET не должен ничего менять, иначе краулер или префетч браузера случайно удалит данные. Второе: повторный POST при плохой сети не должен создавать дубль, для этого бывает ключ идемпотентности. Третье: чувствительное, например пароли и токены, нельзя слать в URL, потому что адрес оседает в логах прокси, истории браузера и Referer. И ещё у URL есть практический лимит длины, большие фильтры в GET упираются в 414.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.