【发布时间】:2015-08-17 16:10:15
【问题描述】:
我正在使用 React 构建 Flask 应用程序,但最终遇到了路由问题。
后端负责成为一个 API,因此一些路由看起来像:
@app.route('/api/v1/do-something/', methods=["GET"])
def do_something():
return something()
以及通往 React 的主要路线:
@app.route('/')
def index():
return render_template('index.html')
我在 React 应用程序中使用 react-router,一切正常,react-router 将我带到 /something,我得到了渲染视图,但是当我在 /something 上刷新页面时,Flask 应用程序会处理这个电话,我得到Not Found 错误。
什么是最好的解决方案?我正在考虑将所有未调用 /api/v1/... 的调用重定向到 / 这并不理想,因为我将返回我的应用程序的主页,而不是呈现 React 视图。
【问题讨论】:
-
如果您不希望后端处理 url,最快最简单的方法是不使用 HTML5 历史 API。停用它会导致像
/#/something这样的hashbang url,重新加载它们总是会触发后端的/视图。否则,您需要在后端处理请求或将它们重定向到您的 react 应用程序,如果请求的 url 不是/,则需要分析请求并触发位置更改。 -
这似乎是某种解决方案,谢谢!
-
我认为这不是一个好的解决方案。现在是 2015 年,你真的应该使用 History API。
-
@DanAbramov 完全正确,但如何?
-
可能还有另一种方法——你可以简单地在 .htaccess 文件中编写一个重写语句,这样每次特定的
#something来自 react-router 而不是烧瓶。如果 URL 基于某种模式,这可能是一种有效的解决方案,以免浪费时间。
标签: python reactjs flask url-routing