Экспресс JS матч маршрут без обработки - PullRequest
0 голосов
/ 03 июня 2019

При наличии экземпляра приложения или маршрутизатора Express JS возможно ли сопоставить запрос с настроенными маршрутами приложений и получить объект, который описывает маршрут, зарегистрированный в приложении?

Например, если бы запрос на /users/1 должен был обрабатываться приложением, для экземпляра app / router была бы возможность программно проверить, есть ли у приложения маршрут, который бы удовлетворял этому запросу, если метод URI и HTTP?

Желательный код sudo (ish):

const app = express();

app.use((req, res, next) => {
    const handler = app.match(req);
    // {
    //     'method': 'GET',
    //     'path': '/user/:id', <--- mainly looking for this
    //     'handler': <function reference>
    // }
    next();
});

app.get('/user/:id', (req, res, next) => {
    // fetch the user and do something with it
});

...

1 Ответ

1 голос
/ 04 июня 2019

AFAIK, нет публично документированных конечных точек маршрутизатора Express, которые обеспечивают описываемое вами поведение на основе его 4.x Документации .

Однако вы можете реализовать это самостоятельно, создав пользовательскийсредство проверки правильности регулярного выражения, чтобы проверить, соответствует ли строка req.path какому-либо определенному пути.Недостатком этого является то, что вам придется вести этот список отдельно от того, что зарегистрировано в Express, что может оказаться затруднительным для обслуживания.

Возможно, вы сможете получить доступ к внутренним компонентам appобъект, чтобы получить необходимую вам функциональность, но учтите, что нестабильность этого подхода может означать, что ваше решение может быть повреждено несущественными обновлениями Express.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...