Spring 捕获 index.html 的所有路由

新手上路,请多包涵

我正在为基于 react 的单页应用程序开发一个 spring 后端,在该应用程序中我使用 react-router 进行客户端路由。

在 index.html 页面旁边,后端提供路径上的数据 /api/**

为了从 src/main/resources/public/index.html 在我的应用程序的根路径 / --- 上提供我的 index.html,我添加了一个资源处理程序

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/").addResourceLocations("/index.html");
}

我想要的是在没有其他路由匹配时提供 index.html 页面,例如,当我调用 /api 以外的路径时。

如何在春季配置这样的包罗万象的路线?

原文由 oli 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 827
1 个回答

由于我的反应应用程序可以使用根作为前向目标,这最终对我有用

@Configuration
public class WebConfiguration extends WebMvcConfigurerAdapter {

  @Override
  public void addViewControllers(ViewControllerRegistry registry) {
      registry.addViewController("/{spring:\\w+}")
            .setViewName("forward:/");
      registry.addViewController("/**/{spring:\\w+}")
            .setViewName("forward:/");
      registry.addViewController("/{spring:\\w+}/**{spring:?!(\\.js|\\.css)$}")
            .setViewName("forward:/");
  }
}

老实说,我不知道为什么它必须完全采用这种特定格式以避免无限转发循环。

原文由 Petri Ryhänen 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题