Почему веб-маршрутизация не всегда автоматизирована?

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

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

4 ответа

Решение

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

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

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

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

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

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

Что такое "модуль" в общем смысле Интернета?

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

Другие вопросы по тегам