Что делает эффективную реализацию URL Mapping и почему? - PullRequest
3 голосов
/ 01 февраля 2010

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

То, что я хочу, это собрать мнения коллег-разработчиков и веб-пользователей о реализации преобразования URL.Особенно я хотел бы, чтобы вы ответили:

  • Какая ваша любимая реализация?
  • Что вам нравится в вашей любимой реализации?
  • Что вам не нравится вВаша любимая реализация?
  • Как бы вы ее улучшили?

Я бы хотел, чтобы вы ответили с двух точек зрения:

  • Как разработчик
  • Как пользователь

Буду признателен за любые мнения по этому вопросу, спасибо!

Ответы [ 2 ]

1 голос
/ 01 февраля 2010

Я работал только с механизмом django URLConf. Я думаю, что способ, которым она опирается на переменную urlpatterns, немного ненадежен, но мне нравится ее выразительность в определении шаблонов и отправке в другие конфигурации URL. Я думаю, что, пожалуй, лучше всего сначала выяснить схему URL, а затем попробовать пару решений, чтобы увидеть, что лучше всего подходит. Если вы собираетесь использовать REST с полным ядром, используя полный набор GET / POST / PUT / DELETE и проверяя заголовки пользовательского агента Accept, и все это, django по умолчанию Вы должны разделить свою логику между файлами конфигурации URL и просматривать файлы, так что это может быть не самым чистым решением.

Однако, поскольку это все Python, вы можете выполнить более сложную обработку, прежде чем назначить urlpatterns.

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

Редактировать: Также выполните поиск в Google по запросу "Разработка схемы URL". Я нашел это без особых усилий: http://www.gaffneyware.com/urldesign.htm. Не исчерпывающий, но некоторые полезные советы были получены при рассмотрении того, что делает flickr.

1 голос
/ 01 февраля 2010

Ну, я должен был заметить тег url-routing, не так ли? :-) К сожалению об этом.

Опыт jcd подражает моему - я тоже использую Django.

Мне нравится тот факт, что маршруты для приложения находятся в приложении (в urls.py) и могут быть просто включены в любые проекты, которые могут использовать это приложение. Меня устраивают регулярные выражения, поэтому указание маршрутов в регулярном выражении меня не расстраивает (но я видел, как другие программисты ломают голову над некоторыми необычными выражениями).

Возможность изменения маршрута по некоторому идентификатору (в случае Django по имени маршрута) является обязательной. Жесткое кодирование URL-адресов в шаблонах или контроллерах (просмотр в Django) - это большая проблема. В Django есть тег шаблона, который использует метод reverse()

Единственное, что я хотел бы сделать, это иметь концепцию маршрутов по умолчанию в django (как Rails делает или даже Pylons). В Django каждый маршрут должен отображаться на метод представления, нет концепции попытки вызова определенного представления на основе самого URL. Преимущество в том, что никаких сюрпризов нет - ваш urls.py является оглавлением для вашего проекта или приложения. Недостатком является то, что urls.py, как правило, длиннее.

...