Вообще говоря, сообществу REST не нравятся сложные данные в запросах GET. Интересно, есть ли хороший принцип, стоящий за этим, или это просто ограничение ограничений (произвольной длины URL) для словарей GET?
Я доволен соответствием между URL-адресами и ресурсами, но почему мои запросы GET не могут принимать сложные данные в теле запроса, в формате json или xml (что разрешено спецификацией HTTP)?
Смысл GET, как я понял, заключался в том, что запросы GET сигнализируют о том, что они не изменяют состояние сервера. Это кажется ортогональным к сложности запроса. Тем не менее, многие люди предлагают, чтобы сложные запросы создавались с помощью PUT или POST, а затем упоминались в GET.
Похоже, это поднимает соглашение (об отсутствии тел по запросам GET) до статуса принципа с неблагоприятными побочными эффектами: необходимость поддерживать состояние другого объекта, который не заслуживает того, чтобы быть ресурсом его собственные - это запрос.
Но, возможно, есть какой-то другой принцип, который мне не хватает - я приветствую ваши комментарии!