我正在构建一个使用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
时。
答案 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);