Правильное использование Express 'res.render () и res.redirect () - PullRequest
0 голосов
/ 28 августа 2018

Я использую res.redirect('page.ejs'); и в своем браузере я получаю сообщение:

Не удается получить /page.ejs

Я не объявил об этом в моем файле маршрутов в стиле:

app.get('/page', function(req, res) {
        res.render('page.ejs');
    });

Должно ли это быть включено для работы res.redirect()?

Когда я не использую res.redirect(), но res.render(), даже если у меня нет кода app.get(), он все равно работает.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

чтобы понять это, давайте посмотрим, что делает каждый из этих методов.

res.redirect('page.ejs');

Это скажет Express, чтобы перенаправить ваш запрос на конечную точку GET /page.ejs. Конечной точкой является экспресс-метод, который вы описали выше:

app.get('/page', function(req, res) {
    res.render('page.ejs');
});

, так как у вас нет определенной конечной точки, она не будет работать. Если он определен, он выполнит функцию, и запустится строка res.render('page.ejs'), которая вернет файл page.ejs. Вы можете вернуть все, что захотите, это может быть someOtherPage.ejs, или вы можете даже вернуть json res.json({ message: 'hi' });


res.render('page.ejs');

это просто ответит клиенту (front-end / js / как вы хотите его называть) шаблоном page.ejs, ему не нужно знать, присутствует другая конечная точка или нет, он возвращает сам шаблон page.ejs.

итак, это действительно зависит от вас, что вы хотите использовать в зависимости от сценария. Иногда одна конечная точка не может обработать запрос, поэтому она переносит запрос на другую конечную точку, которая теоретически знает, как обрабатывать запрос. В этом случае используется redirect.

надежда, которая имеет смысл и проясняет ваше замешательство

(я не эксперт по внутренней работе экспресса, но это общее представление о том, что он делает)

0 голосов
/ 28 августа 2018

Вы должны сделать res.redirect('/page')

...