Задать вопрос
arturich
@arturich

Фильтрация в GET в RESTful

Всем привет! Меня давно мучает вопрос:

допустим у приложения REST api, допустим оно поддерживает запросы вроде этого:

GET /rest-api/models/?idModel=1,2,3,4,5,6,...

Допустим метод возвращает информацию о моделях товаров, идентификаторы которых указаны в запросе.
Все мы знаем, что получать инфу по каждой модели отдельно не прикольно, поэтому групповой запрос в самый раз.

Проблема
А что, если id-шников в get запросе слишком много, или у меня в приложении они десятизначные — в GET не так много может уместиться. Получается в угоду RESTful принципам я должен ухудшить производительность? Вроде звучит как бред — тот же POST запрос, имеющий в теле id-шники будет куда круче.

Что скажет общественность?
  • Вопрос задан
  • 7451 просмотр
Подписаться 3 Оценить 1 комментарий
Ответ пользователя Алексей Гусейнов К ответам на вопрос (4)
В POST запросе круче не будет т.к. не будет работеть кеширование.

Любопытнее другой вопрос, действительно ли обработка N запросов на получение объектов медленее, чем обработка 1 запроса на получение N объектов. При условии, что клиент посылает все запросы через одно HTTP соединение, а сервер использует persistent соединения с СУБД. Если объекты достаточно тяжелые, лишние накладные расходы могут оказаться малы. А теперь если учесть, что гранулярность кеширования увеличилась и клиент не будет запрашивать один и тот же объект дважды, может получиться так, что N запросов будут работать быстрее. А если клиент и сервер поддерживают SPDY и запросы пойдут не последовательно а параллельно, то ценой увеличения нагрузки на сервер можем получить уменьшение времени отклика. Сейчас низкое время отклика вроде бы ценится.
Ответ написан