BrowserHistory在Node / Express中使用API

我正在尝试为使用react-router的React应用程序实现BrowserHistory。 基于文档 ,我在我的index.js

 let express = require('express'); let harp = require('harp'); let path = require('path'); let app = express(); app.use(express.static(__dirname + "/dist")); app.use(harp.mount(__dirname + "/dist")); // BrowserHistory code app.get('*', function (request, response){ response.sendFile(path.resolve(__dirname, 'dist', 'index.html')); }); let port = process.env.PORT || 3333; app.listen(port, () => console.log("Listening on port " + port) ); // ... // Various app.get(...) endpoints below // ... 

但是,现在捕获所有API请求(例如,我想对/metric发出GET请求)并返回index.html而不是正确的JSON数据。

如何实现BrowserHistory并拥有API端点?

您需要在app.get('*', ...)之后为端点定义app.get('*', ...)

如果你看看有关“中间件”的文档 ,你会发现快速应用看起来像一个分层的蛋糕,每一层负责一些东西。 每个请求都会抛出所有图层。 Layer可以执行一些代码,修改reqres ,也可以调用next()图层。

app.get('*', ...)处理所有的请求,并且不会调用next() ,所以如果你在其他中间件之前定义它,它们将不会被执行。