Если вы действительно хотите выполнить синтаксический анализ 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();
});