To GET or not to GET?

В моём маленьком уютненьком мирке стало на одного единорога меньше 🙁

Вот смотрите, открываем мы раздел 9.3 в RFC 2616 и читаем:

The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI.

То бишь, сущность, получаемая GET-запросом, должна однозначно идентифицирована URL-ом. Это называется умным словом идемпотентность.

Далее, открываем письмо многоуважаемого Роя Филдинга, на которое часто ссылаются при обсуждении данного вопроса, и не менее отчётливо читаем:

…a body, if any, has no semantic meaning to the request. <…> So, yes, you can send a body with GET, and no, it is never useful to do so.

То бишь, отправляйте тело в GET-запросе, сколько вам вздумается, да как нефиг. Вот только толку от этого никакого, серверу нельзя его обрабатывать. Казалось бы, куда уж однозначнее? Но нет же, есть, есть в этом мире злые и мерзкие людишки!

Elastic английским по белому пишет в своей документации, что «Since», видите ли, «not all clients support GET with body, POST is allowed as well». Поскольку очень многие клиенты достаточно умны, чтобы соблюдать стандарты, мы, так уж и быть, снизойдём до их частичного соблюдения. Охренеть.