Как проверить, что путь req.url существует в приложении? - PullRequest
0 голосов
/ 01 июня 2018

Я использую sequelizejs, nodejs в моем приложении.Я знаю, что это будет проверять inbuild, но я хочу проверить вручную, как в условии if ().Ниже приведен некоторый путь URL-адреса

/user
/user/11d9b6130159 => user/:id
/user/11d9bdfg0159/sample => user/:id/sample

. То, что я хочу, это промежуточное ПО, нужно проверить текущие URL-адреса в маршруте приложения, например

if(url.parse(req.url).path === "/user"){
  //some action do
}

Но я не получаю оставшиеся URL-адреса.Пожалуйста, предложите способ решить.Спасибо

1 Ответ

0 голосов
/ 02 июня 2018

Если вы действительно хотите выполнить синтаксический анализ URL-адреса вручную, то подход может выглядеть следующим образом:

РЕДАКТИРОВАТЬ: основываясь на вашем комментарии, я изменил пример кода (более 3 уровней).Вы можете легко расширить его в зависимости от ваших потребностей.

const url = require('url');

const path = ctx.request.href;
const pathName = url.parse(path).pathname;
const pathNameParts = pathName.split('/'');

if (pathNameParts && pathNameParts[1] && pathNameParts[1] === 'user') {
    if (pathNameParts[2]) {
        const id = pathNameParts[2];    // :id is now defined
        if (pathNameParts[3] && pathNameParts[3] === 'sample') {
            if (pathNameParts[4]) {
                const id2 = pathNameParts[4];   // :id2 is now defined
                if (pathNameParts[5] && pathNameParts[5] === 'disable') {
                    // do some action for /user/:id/sample/:id2/disable
                } else {
                    // do some action for /user/:id/sample/:id2
                }           
            } else {
                // do some action for /user/:id/sample
            }
        } else {
            // do some action for /user/:id
        }           
    } else {
        // do some action for /user
    }
}

Так что я бы сделал это, только если вы действительно хотите выполнить анализ самостоятельно.В противном случае используйте что-то вроде экспресс-роутера или роутера коа.При использовании экспресс-роутера это будет выглядеть так:

app.use('/user/:id', function (req, res, next) {
  console.log('ID:', req.params.id);
  next();
});
...