我在Express上运行了一个同构应用程序:

  app.get('*', (req, res) => {
    match(
      { routes, location: req.url },
      (error, redirectLocation, renderProps) => { ... }


目前,我正在使用通配符,因为这是我所见过的大多数样板和教程中所采用的方法。

现在的问题是,我需要能够匹配特定的路由,例如/auth/api,它们需要与同构应用程序的路由进行不同的处理。即/auth路由需要对用户进行身份验证。

我需要一种方法来指定那些路由,但是仍然需要在同构应用中使用这些路由来维持通配符匹配。

我考虑过,可以不使用通配符匹配器,而可以将同构应用程序的所有路由收集到数组中,并提供它来表示:

const isoRoutes = ['/home', '/about'];
app.get([isoRoutes], (req, res))


我不确定是否有更好的方法来实现这一目标?

最佳答案

如果您的/auth/api路由未在您的应用中投放页面(即您正在使用它们进行AJAX调用),则应该为它们使用单​​独的请求处理程序。

只要您在通配符get之前指定非通配符路由,就可以使用通配符。

app.get('/auth', handleAuth);
app.get('/api', handleAPI);
app.get('*', handleRender);

关于node.js - 匹配API和同构路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41209194/

10-10 12:26