除了以/ api开头的所有路由运行express中间件?

Sah*_*bov 6 regex node.js express

我有一个Express中间件,它在服务器上呈现React,就像在所有其他路径之后放在最后一样:

app.use(function(req, res) {
  Router.run(routes, req.path, function(Handler) {
    var markup = React.renderToString(<Handler />);
    res.send(swig.renderFile('views/index.html', { html: markup }));
  });
});
Run Code Online (Sandbox Code Playgroud)

由于未指定路由,因此将为所有请求执行此中间件.我想从中排除所有/api路线.问题是即使我在此中间件之前创建所有API路由,也总是有可能在/api/nonexistantendpoint路径上执行此中间件.

更确切地说,我正在寻找一个正则表达式,它将使所有路径的中间件执行,除了以任何路径开头/api.

谢谢!


我已经看过这篇 SO帖子,但找不到对我有用的东西.

这篇文章包含了很多解决方法,这也是不是我所期待的.

这篇文章要求您有条件地检查中间件中的URL.

has*_*sin 11

试试这个:

app.use(/^\/(?!api).*/, function(req, res) {
  Router.run(routes, req.path, function(Handler) {
    var markup = React.renderToString(<Handler />);
    res.send(swig.renderFile('views/index.html', { html: markup }));
  });
});
Run Code Online (Sandbox Code Playgroud)