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可以执行一些代码,修改req
, res
,也可以调用next()
图层。
app.get('*', ...)
处理所有的请求,并且不会调用next()
,所以如果你在其他中间件之前定义它,它们将不会被执行。
- 在快速比较参数时失败(获取请求)
- Express中的res.locals.somevariables在hbs(句柄模板)
- 服务器端反应路由器不会呈现我的路线
- 节点邮件程序错误:“不支持的configuration,降级Nodemailer到v0.7.1使用它”在本地主机
- 如何在Node.js + Express + Mongoose + Jade中处理表单validation,特别是嵌套模型
- Express-Generator – 包含socket.io(bin / www)
- 平均堆栈删除callback
- socket.io – 不能得到它的工作,有404的某种投票电话
- 即使在node.js应用程序中使用body-parser,req.body仍然在POST中为空(使用CORS和HTTPS)