Dark_Knight
@Dark_Knight
Game Dev

Node.js, Express: обработка url, как реализовать?

Здравствуйте, подскажите пожалуйста. Django обрабатывает красиво url
urlpatterns = [
    url(r'^articles/2003/$', 'news.views.special_case_2003'),
    url(r'^articles/([0-9]{4})/$', 'news.views.year_archive'),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', 'news.views.month_archive'),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 'news.views.article_detail'),
]

Есть ли такая возможность в Node.js в Express или другом фреймворке. И как это можно сделать(статья, пример)? Спасибо за помощь и ваше время.
  • Вопрос задан
  • 3957 просмотров
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Посмотрите вот этот раздел справки Express. В нём описывается как раз именно это - как задавать контроллер для урла.
Несколько примеров:
1) обработчик дефолтной индексной страницы:
app.get('/articles/2003/', function(req, res){
  res.send('articles in 2003 year');
});

2) Использование Regex для проверки url:
app.get(/^\/articles\/([0-9]{4})\/$/, function(req, res){
  res.send('articles in ' + req.params[0] + ' year');
});

3) Использование формата в url:
app.get('/user/:id', function(){
  // ... 
})

4) Можно задать обработчик и без указания инлайн-функции, разместив контроллеры в отдельном файле. Так будет ещё больше похоже на сабж:
var controllers = require('./controllers');
app.get('/articles/2003/', controllers.special_case_2003);
app.get(/^\/articles\/([0-9]{4})\/$/, controllers.year_archive);
app.get('/user/:id', controllers.user);

В файле controllers.js описаны функции-обработчики каждого из url.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы