2012-01-25 2 views
8

Вообще говоря, сообщество REST, похоже, не любит сложные данные в запросах GET. Интересно, есть ли хороший принцип для этого, или это просто опускание ограничений (произвольная длина URL) на словари GET?REST и GET ... снова

Я доволен перепиской между URL-адресами и ресурсами, но почему мои запросы GET не могут принимать сложные данные в теле запроса в json или xml (что разрешено спецификацией HTTP)?

Точка GET, поскольку я понял, что GET запрашивает сигнал о том, что они не изменяют состояние сервера. Это кажется ортогональным по сложности запроса. Тем не менее многие люди предполагают, что сложные запросы создаются с помощью PUT или POST, а затем упоминаются в GET.

Это, по-видимому, поднимает конвенцию (не имея тел в запросах GET) к статусу принципа, с неудачными побочными эффектами: необходимость поддерживать состояние другого объекта, который не заслуживает быть ресурсом на его собственный - это запрос.

Но, возможно, есть какой-то другой принцип, который мне не хватает - я приветствую ваши комментарии!

ответ

4

Страх в том, что существующие веб-посредники сбросят ваше тело GET. К счастью, новые спецификации httpbis переформулировали текст о получении тел и сделали его немного менее страшным. Лично я рассматриваю возможность использования get с телами самостоятельно, потому что я хочу регистрировать небезопасные запросы, и на данный момент у меня нет простого способа определить, является ли POST безопасным или нет. Если у вас есть контроль над компонентами, которые находятся между вашим агентом-агентом и сервером происхождения, тогда я говорю, продолжайте использовать GET с телами.

+0

интересно ... может ли кто-нибудь поделиться своими неудачными переживаниями с отброшенными телами «в дикой природе»? – shaunc

+0

Нет, но какой у вас план, если вы столкнулись с ним? –

+0

Поверните хвост и убежите! Но если его единственная страшная легенда, и ее никогда не случалось ни с кем (слушая), это делает меня несколько более уверенным. – shaunc