Можно ли создать новую сущность GET-запросом
Что проверяют
Отличаете ли вы «запрещено спецификацией» от «технически невозможно». Для тестировщика это вопрос про то, заведёте ли вы баг и сможете ли объяснить, чем именно он опасен.
Как отвечать
Технически да: сервер волен выполнить любое действие на любом методе, и GET, создающий сущность, работать будет. Но по HTTP метод GET относится к безопасным: клиент, отправляя его, не берёт на себя ответственность за изменение состояния. Значит это дефект, и заводить его надо вместе с последствиями:
- ответы GET кэшируются браузером и промежуточными узлами, повтор из кэша создаст дубль или скроет настоящий результат;
- ссылку могут предзагрузить, повторить ретраем, открыть краулером, положить в закладки;
- параметры уходят в логи, в историю браузера и в заголовок Referer, а это ещё и утечка данных;
- защита от CSRF на GET обычно не настроена.
Что проверить в тестах: повторный вызов и разницу результата, заголовки кэширования, поведение за прокси, наличие токена защиты. Полезно добавить, что создаёт не только POST: метод PUT создаёт ресурс, когда адрес задаёт сам клиент, и отвечает кодом 201.
Где спотыкаются
Отвечают коротким «нельзя» и теряются на встречном вопросе, что произойдёт, если разработчик всё-таки так сделал. Ждут разбора последствий, а не цитаты из стандарта.
Путают безопасность и идемпотентность. GET безопасен и идемпотентен, PUT и DELETE идемпотентны, но состояние меняют, POST не даёт ни того ни другого.
Подкрепляют ответ выдуманной историей из проекта с точными процентами. Уточняющие вопросы про детали такие рассказы разваливают, и лучше короткий настоящий случай или честное «сам не встречал, проверял бы так».