我有一个快速服务器处理:1 API 路由和渲染我的初始 index.html
包括 bundle.js
持有我的 React/React-Router/Redux 应用程序。
就目前而言,不可能在我的网页上显示 404,因为我掌握了所有内容:
app.use(function (req, res) {
return res.render('index')
})
为了让 react-router
的 NoMatch
正常工作,我需要发送 404 代码。
我的路线如下:
快递 — /api/test/:x/:y
反应路由器 — :x/
, :x/:y
我基本上想要实现的是,如果用户访问了以下 URL: :x/:y/z/and/further
然后返回 404, 除非 他们访问的是 /api/test/:x/:y
问题:
- 我如何匹配路由,不包括我的 API 路由,最好以可扩展的方式返回适当的状态代码?
- 对于如此简单的事情,在子域上进行设置是否有很大的开销?这甚至可以缓解这个问题吗?当应用程序增长时,我会遇到问题吗?
原文由 speak 发布,翻译遵循 CC BY-SA 4.0 许可协议
查看 react-router 服务器端渲染文档: reacttraining.com/react-router/web/guides/server-rendering
解决方案:
match
函数从react-router
检查 express 中的 url。它应该写在负责API路由的中间件之后。所以,中间件应该类似于这样:
如果任何路线发生变化,您无需在 express 应用程序上执行任何操作,因为您在前端和后端使用相同的代码。