无需处理即可表达JS匹配路线

时间:2019-06-03 20:30:34

标签: node.js express

给出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 个答案:

答案 0 :(得分:1)

AFAIK没有公开记录的Express路由器终结点,可以根据其4.x Documentation提供您描述的行为。

但是,您可以自己创建一个自定义的正则表达式验证器,以检查req.path字符串是否与任何定义的路径匹配,从而自己实现。不利的一面是,您必须将该列表与注册到Express的列表分开维护,这可能很难维护。

您也许可以扎根app对象的内部来获取所需的功能,但是请注意,这种方法的不稳定性将意味着您的解决方案可能会因Express的非重大更新而被破坏。