Express root获取路由覆盖其他路由

时间:2018-06-22 14:27:19

标签: node.js express

我正在构建一个使用Express处理所有后端配置的React.js项目。我有一个主路由文件,其中包含我的所有路由。

// Root Routes
app.get('*', mainRoutes.Root);

// Taxonomy Routes
app.post('/api/v1/taxonomy/create', taxonomyRoutes.Create);
app.get('/api/v1/taxonomy/get', taxonomyRoutes.GetAll);

我在每条路由上都提供index.html页面,然后让我的React Router根据该路由处理前端。

class MainRoutes {
  constructor() {
    // Main root file to serve.
    this.rootFile = 'index.html';
    // Bind methods.
    this.Root = this.Root.bind(this);
  }

  /**
   * Root, index route function for application.
   * @param {Object} req
   * @param {Object} res
   */
  Root(req, res) {
    res.sendFile(path.resolve(this.rootFile));
  }
}

问题是*获取路由会覆盖任何其他获取路由。

app.get('*', mainRoutes.Root);

因此,当路线/api/v1/taxonomy/get被击中时,以下路线实际上不会触发。

app.get('/api/v1/taxonomy/get', taxonomyRoutes.GetAll);

我如何让它们都起作用?仍在使用get时。

1 个答案:

答案 0 :(得分:1)

您的*匹配所有内容,包括分类法路线,这是第一条路线。在定义路线时只需更新订单

// Taxonomy Routes
app.post('/api/v1/taxonomy/create', taxonomyRoutes.Create);
app.get('/api/v1/taxonomy/get', taxonomyRoutes.GetAll);

// Root Routes
app.get('*', mainRoutes.Root);