Javascript 反应路由器和快速获取冲突

Javascript 反应路由器和快速获取冲突,javascript,node.js,reactjs,express,react-router,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,因为它将重定向

我不知道路由器和快速路线是如何协同工作的

我有这个

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路由器将无法正常工作。

您的
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
开头的任何请求都将由
apirouts
路由器处理,其他所有请求都由星号处理。

您的
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
开头的任何请求都将由
apirouts
路由器处理,其他所有请求都由星号处理。

只需更改顺序即可。首先放置您的
api
路线,然后是
*
路线必须更改顺序。首先放置您的
api
路线,然后放置
*
路线