Ответ 1
Запросы GET могут содержать тело объекта
RFC 2616 не препятствует тому, чтобы тело объекта было частью запроса GET. Это часто неправильно понимается, потому что PHP путает воды с его слабо названным супертонбалом $_GET
. $_GET
технически не имеет ничего общего с методом запроса HTTP GET
- это не что иное, как список значений ключа-значения параметров, кодированных по URL-адресу, из строки запроса запроса URI. Вы можете получить доступ к массиву $_GET
, даже если запрос был выполнен через POST/PUT/etc. Странно, правда? Не очень хорошая абстракция, не так ли?
Почему тело объекта GET является плохой идеей
Итак, что говорит о методе GET... хорошо:
В частности, была установлена конвенция о том, что методы GET и HEAD НЕ ДОЛЖНЫ иметь значение принятия иного действия, кроме поиска. Эти методы следует считать безопасными.
Поэтому важно, чтобы GET был уверен, что любой запрос GET безопасен. Тем не менее, запрет только "НЕ ДОЛЖЕН"... технически HTTP по-прежнему позволяет запросам GET приводить к действию, которое не является строго основанный на "поиске".
Конечно, с семантической точки зрения, используя метод с именем GET
для выполнения действия, отличного от
"получение" ресурса тоже не имеет особого смысла.
Когда тело объекта GET ошибочно ошибочно
Что касается идемпотенции, спецификация говорит:
Методы могут также иметь свойство "идемпотенции" в этом (помимо ошибок или проблем с истечением срока) побочные эффекты N > 0 одинаковых запросов такие же, как для одного запроса. Методы GET, HEAD, PUT и DELETE делятся этим свойством.
Это означает, что метод GET не должен иметь разных побочных эффектов для нескольких запросов для тот же ресурс. Таким образом, независимо от тела объекта, присутствующего как часть запроса GET, побочные эффекты всегда должны быть одинаковыми. В условиях неспециалиста это означает, что если вы отправляете GET с телом лица 100 раз сервер не может создать 100 новых ресурсов. Отправляемый раз или 100 раз запрос должен имеют тот же результат. Это серьезно ограничивает полезность метода GET для отправки тела сущностей.
Когда вы сомневаетесь, всегда возвращайтесь к испытаниям безопасности/идемпотенции при оценке эффективности метода и его побочных эффектов.