Как вернуть случайные предметы RESTful? - PullRequest
7 голосов
/ 30 декабря 2008

Мой дизайн предоставляет два вида ресурсов:

  1. Изображения
  2. Метки

Я бы хотел, чтобы клиенты могли запрашивать случайные изображения по своим тегам. Например: Дайте мне случайные изображения с тегами «Нью-Йорк» и «Зима». Как бы выглядел дизайн RESTful в этом случае?

Ответы [ 5 ]

4 голосов
/ 31 декабря 2008

Чтобы подвести итог всей дискуссии в комментариях, а не менять свое первоначальное предложение, вот что я в итоге придумаю:

Вы хотите получить доступ к изображениям с помощью тегов; каждый тег относится к набору изображений. Поскольку один и тот же тег может использоваться намного чаще, чем другой (скажем, нью-йоркские фотографии использовались намного чаще, чем чикагские), вам следует использовать конфигурацию RESTful, которая позволяет кэшировать, чтобы вы могли кэшировать нью-йоркские фотографии. ИМХО, решение будет:

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

2 голосов
/ 30 декабря 2008

Я боролся с этой проблемой. В итоге мы реализовали HttpResponseRedirect, например:

http://www.example.com/randomNewYorkImage

случайное изображение Нью-Йорка:

http://www.example.com/images/New_York/1234.

Первый ресурс может быть задуман как случайный диспетчер изображений в Нью-Йорке. Это решение будет загружать больше сервера, так как для него будет запрошено два ресурса, но оно настолько RESTful, насколько вы можете получить.

Отредактировано: плюс, если вы кешируете, каждое изображение будет в кеше, и ваш сервер переходит от отправки изображения к отправке только перенаправления, так как кеш будет перехватывать второй запрос и, таким образом, уменьшать нагрузку на ваш сервер.

1 голос
/ 30 декабря 2008

Многомерная идентификация ресурса является сложной задачей.

Ваш ресурс - это изображение, так что это ваш URI. Кроме того, конкретное изображение имеет определенный URI, который никогда не изменяется.

Ваш "по тегу" является неидентифицирующим атрибутом ресурса. Для этого можно запросить строку запроса.

Вот моя первая мысль.

0 голосов
/ 30 декабря 2008

Я согласен с Триптихом в этом. В некотором смысле добавление random в конец URI делает его похожим на операцию, но если он ограничен тегом, то вы действительно просто уточняете контекст.

В его примере:

/ изображение / помеченный / sometag / случайное

ресурс изображений -> область тегов (все изображения с тегами) -> определенный тег (все изображения с тегом X) -> случайный (ресурс из списка изображений с тегом X)

0 голосов
/ 30 декабря 2008

Я бы сделал что-то вроде http://foo.com/image/tagged/sometag/random и перестал бы спать из-за этого.

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