2011-07-21 2 views
0

Простая ситуация: У меня есть сервер с тысячами изображений на нем. Я хочу создать спокойный бизнес-уровень, который позволит мне добавлять теги (категории) к каждому изображению. Это просто. Я также хочу получить списки изображений, которые соответствуют одному тегу. Это тоже просто. Но теперь я также хочу создать метод, который принимает список тегов и который будет возвращать только изображения, соответствующие всем этим тегам. Это немного сложнее, но я все еще могу это сделать.
Проблема в этом, однако. Скажем, моя служба остальное в pictures.example.com, я хочу, чтобы иметь возможность сделать следующие вызовы:Вложенная маршрутизация REST

  • pictures.example.com/Image/{ID} - Если вернуть определенное изображение
  • pictures.example.com/Images - должен возвращать список идентификаторов изображений.
  • pictures.example.com/Images/{TAG} - должен вернуть список идентификаторов изображений с помощью этого тега.
  • pictures.example.com/Images/{TAG}/{TAG} - Должен возвращать список идентификаторов изображений с этими тегами.
  • pictures.example.com/Images/{TAG}/{TAG}/{TAG} - должен вернуть список идентификаторов изображений с этими тегами.
  • pictures.example.com/Images/{TAG}/{TAG}/{TAG}/{TAG}/{TAG} - должен вернуть список идентификаторов изображений с этими тегами.
  • и так далее ...

Итак, как я создал успокоительные проекты веб-сервис, который позволит мне гнездовые тегам, как это и все еще быть в состоянии прочитать их все? Без каких-либо ограничений на количество тегов, хотя длина URL-адреса была бы пределом. Я мог бы иметь до 30 тэгов в выборе, и я не хочу настраивать 30 разных объектов маршрутизации, чтобы заставить его работать. Я хочу одну штуку, которая может технически разрешать неограниченные теги.

Да, я знаю, что могут быть другие способы отправки такого списка взад и вперед. Лучше даже, но я хочу знать, возможно ли это. И если его легко создать. Таким образом, URL-адрес не может отличаться от приведенных выше примеров.
Должно быть просто, я думаю. Просто не могу найти хорошее решение ...

ответ

1

Выбираемая структура URL должна основываться на том, что легко реализовать с помощью веб-фреймворка. Я бы ожидать что-то вроде:

http://pictures.example.com/images?tags=tag1,tag2,tag3,tag4 

будет намного проще в обращении на сервере, и я не вижу никаких преимуществ подхода сегмента пути, что вы испытываете проблемы с.

+0

Технически это альтернативное решение, которое я имею в виду. Но этот проект подразумевается как эксперимент, поэтому я действительно хочу сделать это с трудом. :-) Если это возможно, так или иначе ... –

1

Я предполагаю, что вы можете понять, как на самом деле написать запрос SQL или файловой системы для фильтрации несколькими тегами. В CherryPy, например, закреплять, что до URL так просто, как:

class Images: 
    @cherrypy.tools.json_out() 
    def index(self): 
     return [cherrypy.url("/images/" + x.id) 
       for x in mylib.images()] 
    index.exposed = True 

    @cherrypy.tools.json_out() 
    def default(self, *tags): 
     return [cherrypy.url("/images/" + x.id) 
       for x in mylib.images(*tags)] 
    default.exposed = True 

... где *tags аргумент является кортеж из всех /{TAG} сегментов пути клиент посылает. Другие веб-структуры будут иметь аналогичные варианты.

+0

Не использую Python. –

+1

Возможно, вы должны быть. Или, возможно, если бы вы сказали нам, что используете вместо этого, мы можем рекомендовать альтернативу в выбранном вами окружении. – fumanchu

Смежные вопросы