Использование POST в качестве обходного пути для ограничения количества символов в URL - PullRequest
10 голосов
/ 10 мая 2011

Если у вас есть API и вы поддерживаете операцию POST только из-за ограничений длины URL-адреса и передачи сложных параметров в запросе, можете ли вы сказать, что у вас есть архитектура RESTful?

Что в основном подразумевает вышесказанное, так это то, что для этого конкретного (только для чтения) API нет семантической разницы между GET и POST, поэтому то, что можно сделать с помощью GET, можно также сделать с помощью POST (но не наоборот из-за ограничений).

Будет ли это по-прежнему делать стиль архитектуры RESTful?

Ответы [ 5 ]

4 голосов
/ 10 мая 2011

Технически вы не нарушаете никаких ограничений.Однако вы значительно снижаете информативность запросов.Это приведет к потере способности кешировать ответы.Возможность кэшировать ответы является важной функцией, необходимой для построения эффективных систем REST.

0 голосов
/ 10 мая 2011

Почему бы вам просто не переключиться на включение тела в GET вместо использования строки запроса?

Обновление

RFC говорит следующее:

Сервер ДОЛЖЕН читать и пересылать тело сообщения по любому запросу;если метод запроса не включает определенную семантику для тела объекта, то тело сообщения ДОЛЖНО игнорироваться при обработке запроса

Theres ничто в спецификации, которая говорит, что тело не может быть включено ни в один из методов.И все прокси, серверы и т. Д. Обязаны включать тело.Обработчик (вы) должен игнорировать тело или нет.

Что касается метода GET, ничто не говорит о том, что он не может включать тело.

Это означает, что вы можете использоватьПОЛУЧИТЕ тело, если ваш веб-сервер его поддерживает.

0 голосов
/ 10 мая 2011

Таким образом, вопрос здесь о спокойной архитектуре, а не об успокоительных веб-сервисах. Если мы пойдем по информации, приведенной в Wiki-RestfulArch-Constraints , да, это так.

0 голосов
/ 10 мая 2011

Вы определенно потеряете функциональность, предоставляемую HTTP для запросов GET. Например, прокси-серверы делают определенные предположения относительно запросов GET (идемпотентность, кешируемость).

В POST нет ничего плохого, но, возможно, метод REPORT более уместен.

0 голосов
/ 10 мая 2011

Термин «Представительный государственный трансферт» был введен и определен в 2000 году Роем Филдингом в его докторской диссертации.Раздел 6.3 объясняет, как применить REST к HTTP: http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm#sec_6_3

Fielding не утверждает, что использование POST запрещено.

В Википедии также упоминается POST как допустимая операция HTTP для веб-сервисов RESTful.: http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...