RFC 7231 не изменили семантику
Полезная нагрузка в сообщении запроса GET не имеет определенной семантики;отправка тела полезной нагрузки по запросу GET может привести к тому, что некоторые существующие реализации отклонят запрос.
Это не работает нормально - не совсем. Проблема в том, что семантика кэширования HTTP не учитывает тело запроса;Компоненты общего назначения будут предполагать, что сервер соблюдает стандартизированную семантику, и поэтому не собираются копаться в теле сообщения запроса, чтобы посмотреть, соответствует ли массив запроса любому из ранее кэшированных представлений.
Это, в свою очередь, означает, что для предотвращения проблем с совместимыми компонентами вам придется отключить кэширование вашего ресурса.
Поскольку кэширование является важным ограничением в REST архитектурном стиле , это явно шаг в неправильном направлении.
Если вы должны использовать полезную нагрузку, то вам, вероятно, следует смотреть на POST
, а не GET
. См. Также: SOAP, GraphQL.
Но POST совсем не идемпотентен
Это верно. Есть компромисс, который нужно сделать.