Express.js Route API не работает при предоставлении универсального маршрута

Я новичок в стеке MEAN и создал API с помощью express.js.

var User = mongoose.model('User');

router.get('/users', function(req, res, next) {
  User.find(function(err, users){
    if(err){ 
        return next(err); 
    }

    res.json(users);
  });
});

И это маршрут, который я сделал в index.js

router.get('/', function(req, res, next) {
  res.render('index');
});

API работал нормально, используя этот маршрут, но когда я изменил указанный выше маршрут на «универсальный» маршрут

router.get('*', function(req, res, next) {
  res.render('index');
});

API не работал (я использовал для этого Postman), и он возвращал страницу index.ejs вместо ответа json. Может кто-нибудь объяснить, почему это произошло? Я хочу использовать универсальный маршрут и хочу, чтобы API тоже работал.


person Sibtain    schedule 28.08.2015    source источник


Ответы (1)


Что на первом месте в вашем коде? Путь к /users или универсальный маршрут? Сначала вам нужно определить более конкретные маршруты, а в конце - все.

router.get('/users', function(req, res, next) {
  ...
});

router.get('*', function(req, res, next) {
  ...
});
person Lukasz Wiktor    schedule 28.08.2015
comment
Выбор универсального маршрута в конце сработал! Огромное спасибо :) - person Sibtain; 28.08.2015
comment
Я даже не могу принять ответ, так как на него ответили менее чем за 5 минут. - person Sibtain; 28.08.2015