Я создаю CMS в node.js и Express. Я разрешаю пользователям создавать свои собственные подразделы на сайте. Подсектором может быть блог, страница или форум. Эти подразделы могут быть установлены на один уровень в пути сайта URL-адрес, так, например:Отправка маршрута Express.js на основе первого параметра?
domain.com/custom-path-blog/
Я бы поддержать следующую структуру URL-адрес с экспресс-маршруты:
domain.com/custom-path-blog/ -> blog index
domain.com/custom-path-blog/page/5 -> list posts on page 5
domain.com/custom-path-blog/guides/ -> list posts that belong to guides category
domain.com/custom-path-blog/guides/this-is-a-post -> shows a post
Я также должны поддерживать другие подразделы с разными структурами URL. Я должен позвонить в базу данных, чтобы проверить, что на самом деле первый уровень в URL-адресе, прежде чем я могу отправить его на соответствующий маршрут.
Поскольку это веб-сайт saaas, я не хочу динамически регистрировать маршруты на моем узле, поскольку у меня могут быть тысячи пользователей с возможными миллионами маршрутов. Это не выполнимо. Я должен пойти в базу данных для этого первого фрагмента информации.
Как только я знаю, что подраздел является блогом или форумом или магазином электронной коммерции, как я могу отправить URL-адрес этого «настраиваемого пути-блога», который будет обработан соответствующим механизмом экспресс-маршрутизации?
Я начинаю думать, что это может быть слишком сложно сделать с экспресс-маршрутами, и мне придется делать это вручную.
Спасибо!
Спасибо за приятный ответ. Что вы подразумеваете под этапом инициализации? Будет ли вызываться функция appSelector при каждом запросе? С уважением. – SrgHartman
Этап инициализации означает, что при запуске процесса он должен вызывать перед app.listen. appSelector будет вызываться по каждому запросу, но он не будет вызываться, если есть более высокопоставленное промежуточное ПО, вызывающее res.end() – damphat