Я использую экспресс, и я хочу, чтобы URL моего профиля пользователя были такими: example.com/:username
Однако мне все еще нужны другие URL, такие как example.com/login и example.com/view /: id
Если я закажу роутер таким образом, он будет обрабатывать «логин» как имя пользователя при отправке запроса на example.com/login:
router.get('/:username', function (req, res, next) {
res.render('profile', {data: req.params.username});
})
router.get('/login', function (req, res, next) {
res.render('login', {data: null});
})
router.get('/view/:id', function (req, res, next) {
res.render('view', {data: req.params.id});
})
Если я поставлю/: имя пользователя маршрутизатора в конце, все работает правильно.Однако, если кто-то зашел на example.com/view (без идентификатора), мне нужно отправить сообщение об ошибке, что контроллер представления не получил идентификатор.Вместо этого он снова видит его как имя пользователя и вместо этого отправляет сообщение об ошибке, что имя пользователя не существует.
Какой самый чистый способ решить эту проблему?Должен ли я просто добавить маршрутизатор для всех базовых путей URL?(Как то так):
router.get('/login', function (req, res, next) {
res.render('login', {data: null});
})
router.get('/view/:id', function (req, res, next) {
res.render('view', {data: req.params.id});
})
router.get('/view', function (req, res, next) {
res.render('viewError', {data: null});
})
router.get('/:username', function (req, res, next) {
res.render('profile', {data: req.params.username});
})