反应路由器并表达GET冲突

时间:2017-04-22 09:13:47

标签: javascript node.js reactjs express react-router

我无法弄清楚路由器和快速路由如何协同工作。

我有这个

app.get('*', function(req, res) {
    res.sendFile(path.resolve(__dirname) + '/server/static/index.html');
});

// routes
const apiRoutes = require('./server/routes/api');
app.use('/api', apiRoutes);

问题是我的api无法使用GET,因为它会重定向到index.html。如果我删除了通配符路由,那么react-router将无法正常工作。

1 个答案:

答案 0 :(得分:2)

您的app.get('*')语句将与任何请求相匹配。您可以通过更改语句的顺序轻松解决问题:

// routes
const apiRoutes = require('./server/routes/api');
app.use('/api', apiRoutes);

app.get('*', function(req, res) {
    res.sendFile(path.resolve(__dirname) + '/server/static/index.html');
});

这样,路径以/api开头的任何请求都将由apiRoutes路由器处理,所有其他请求都由星号处理。