Создание маршрута уникальным для одного файла e js - PullRequest
0 голосов
/ 11 марта 2020

Я хочу, чтобы URL-адрес, подобный этому localhost3000/hh234due, с уникальным идентификатором, направлял на указанную c страницу, но то, что я делаю, противоречит другим маршрутам.

как сделать /: идентификатор уникален для одного просмотра


    module.exports = function (app) {

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

    }

Ответы [ 3 ]

0 голосов
/ 11 марта 2020

Поскольку маршруты проверяются по порядку, поместите его last в последовательности, и все, с чем он будет конфликтовать, будет иметь приоритет над ним.

0 голосов
/ 11 марта 2020

В целом, это просто сомнительная практика, потому что

app.get('/:id', ...)

соответствует каждому возможному маршруту верхнего уровня и вызывает конфликты с другими маршрутами верхнего уровня, которые вы хотите / нужны в работе вашего сайта.

Вы можете заставить его работать, всегда устанавливая его как последнее возможное определение маршрута, но я бы рекомендовал изменить URL-адрес на что-то вроде

http://localhost:3000/id/hh234due

, а затем вы можете использовать:

app.get('/id/:id', ...)

и не должно конфликтовать ни с одним из ваших маршрутов верхнего уровня.

При таком способе структура URL также является более декларативной, поскольку в части /id четко указано, что это за URL, а не раньше, когда вы больше полагались на тот факт, что он не похож ни на один других маршрутов верхнего уровня на вашем сайте, так что «я думаю», это должен быть идентификатор, который не так декларативен или не понятен другим разработчикам, которые могут работать над этим сайтом в будущем.

0 голосов
/ 11 марта 2020

Достаточно поставить маршрутизацию страницы spcifi c перед общей, как это:

module.exports = function (app) {

    app.get('/hh234due', function (req, res) {
        res.render('<your special page>');
    }); 

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

}
...