Чем GET отличается от POST
Вопрос
Расскажи, чем GET отличается от POST и что из этого важно для тестирования.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
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 ошибок.