Почему веб-маршрутизация не всегда автоматизирована? - PullRequest
0 голосов
/ 02 сентября 2011

Какова цель ручной веб-маршрутизации?Почему не все просто автоматически сопоставляют между URL-адресами и именами модулей / методов / функций?

Я бы сказал, что вы можете начать с полностью автоматического сопоставления, а затем вы можете просто использовать Apache mod_rewrite или mod_redirect или что угодно, если выхотите выполнить рефакторинг таким образом, чтобы изменить URL-адреса, не нарушая существующие URL-адреса.

Ответы [ 4 ]

5 голосов
/ 02 сентября 2011

Существует две основные причины использования ручной маршрутизации, а не автоматической.

  1. Ручная маршрутизация позволяет использовать REST по назначению. Это означает, что один и тот же URL-адрес может обращаться к 4 различным действиям, которые различаются по используемому методу HTTP (POST, GET, PUT, DELETE). С помощью автоматической маршрутизации вы будете выставлять имена методов ваших базовых функций, поэтому у вас будет 4 разных URL.

  2. Ручная маршрутизация также позволяет создавать более удобные для поисковых систем URL-адреса. Обычно это достигается с помощью метода slugify, но ручная маршрутизация позволяет игнорировать эту дополнительную информацию и просто сосредоточиться на части идентификатора URL, чтобы правильно направить вас к конкретному ресурсу.

Другая причина, которая носит чисто косметический характер, заключается в том, что URL-адреса выглядят лучше. Это имеет значение? Некоторые могут так думать.

2 голосов
/ 02 сентября 2011

Один аргумент, который вы могли бы сделать, заключается в том, что пространство имен URL, которое представляет ваше приложение, является частью его пользовательского интерфейса, и поэтому правила маршрутизации, которые управляют им, относятся к остальной части исходного кода приложения. Кроме того, в случае Ruby on Rails конфигурация маршрутизации - это всего лишь код Ruby, поэтому при необходимости вы можете использовать более сложную бизнес-логику, чем это допускают только модули Apache.

1 голос
/ 02 сентября 2011

Для спокойного HTTP важен URL.Так что, если вы используете только автоматические URL, у вас будет много не очень хороших URL.Например, вы можете использовать один и тот же URL / udpateUsers для Users.edit () и User.save () в Play, различая GET и POST.Кроме того, вы можете поддерживать привязку данных, например / users / show / 1, чтобы показывать пользователя с идентификатором 1. Однако по умолчанию в Play это делается автоматически.

0 голосов
/ 03 сентября 2011

Что такое «модуль» в общем веб-смысле?

По умолчанию Apache сопоставляется с файловой системой, потому что это единственное, что есть во всех системах, где работает Apache.

...