【问题标题】:Match API and isomorphic routes匹配 API 和同构路由
【发布时间】:2017-05-03 17:08:17
【问题描述】:

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

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

【问题讨论】:

    标签: node.js reactjs express react-router


    【解决方案1】:

    如果您的 /auth 和 /api 路由没有为您的应用提供页面(即您将它们用于 AJAX 调用),您应该为它们设置单独的请求处理程序。

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

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

    【讨论】:

      【解决方案2】:

      你可以这样编码:-

      req.url.match(//regular expression);
      

      Match() 仅适用于正则表达式。

      【讨论】:

      • 所以你的意思是保持通配符匹配并在回调中使用req.url.match来处理对api的请求?
      猜你喜欢
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 2015-11-07
      • 2021-08-13
      • 2013-08-24
      • 1970-01-01
      相关资源
      最近更新 更多