除了以 /api 开头的路由之外,为所有路由运行快速中间件?

2024-01-04

我有一个 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 }));
  });
});

由于未指定路由,因此该中间件将为所有请求执行。我想排除所有/api从它出发的路线。问题是,即使我在这个中间件之前创建所有 API 路由,这个中间件总是有可能在其上执行/api/nonexistantendpoint path.

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

Thanks!


我已经看过了this https://stackoverflow.com/questions/12921658/use-specific-middleware-in-express-for-all-paths-except-a-specific-one所以发帖但找不到任何对我有用的东西。

And 这个帖子 https://stackoverflow.com/questions/19313016/catch-all-route-except-for-login包含很多解决方法,这也不是我想要的。

This https://stackoverflow.com/questions/23622538/add-middleware-to-all-routes-but-a-fewpost 要求您有条件地检查中间件内的 URL。


尝试这个:

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 }));
  });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

除了以 /api 开头的路由之外,为所有路由运行快速中间件? 的相关文章

随机推荐