【问题标题】:Angular Routing with Google AppEngine and Flask使用 Google AppEngine 和 Flask 进行角度路由
【发布时间】:2022-01-03 02:39:20
【问题描述】:

我在 Google AppEngine 上有一个应用程序,后端使用 Python3 和 Flask,前端使用 Angular。如果前端使用 Angular 路由导航到 /welcome,它就可以正常工作。但是如果我点击浏览器刷新,它会给出 404 错误,因为当然,xxxx.appspot.com/welcome 在后端不存在。有没有解决的办法?这是我的 app.yaml:

runtime: python38

handlers:
  - url: /rest/.*
    script: auto
  - url: /(.+)
    static_files: dist/\1
    upload: dist/(.*)
  - url: /
    static_files: dist/index.html
    upload: dist/index.html

【问题讨论】:

  • 怎么样 - 您可以将用户重定向到主页(而不是 404),然后他们必须再次手动导航回/welcome。您可以添加一个路径参数,同时将它们重定向到您的 Angular 应用程序将解释的主页并自动将它们导航到正确的页面
  • 在这个answer 中,您在app.yaml 的末尾使用了一个包罗万象的/.* 处理程序

标签: angular flask google-app-engine routes


【解决方案1】:

我无法让 cmets 中提供的建议发挥作用。据说有一个服务器端修复程序,但似乎我应该做的所有事情都已经完成了。所以我实现了一个适合我目的的客户端解决方案。 首先,我指定在 url 生成中使用散列,在app-routing.module.ts 中有以下部分:

@NgModule({
  imports: [RouterModule.forRoot(routes, { useHash: true })],
  exports: [RouterModule],
  bootstrap: [AppComponent]
})

这消除了 404 错误,但并不完全符合预期。所以我在构造函数中使用以下代码在app.component.ts 中捕获了刷新请求:

router.events.subscribe((event) => {
  if (event instanceof NavigationStart) {
      if (!router.navigated) this.goHome();  // That is, user hit the refresh button
  }
});

调用我自己的goHome() 方法,该方法处理适当的导航。

【讨论】:

猜你喜欢
  • 2015-12-28
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 2015-09-28
  • 2014-11-16
相关资源
最近更新 更多