58

クライアント側のルーティングに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

春にそのようなキャッチオールルートを構成するにはどうすればよいですか?

4

8 に答える 8

13

@EnableWebMvc を避ける

デフォルトでは、Spring-Boot は以下の静的コンテンツを提供しますsrc/main/resources

  • /META-INF/リソース/
  • /資力/
  • /静的/
  • /公衆/

これこれを見てください。

または、@EnableWebMvc を維持して addViewControllers をオーバーライドします

指定しました@EnableWebMvcか?これを見てください: Java Spring Boot: How to map my app root (“/”) to index.html?

@EnableWebMvc を削除するか、次のように再定義できますaddViewControllers

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("forward:/index.html");
}

または、キャッチするコントローラーを定義します/

githubでこのspring-boot-reactjs サンプル プロジェクトをご覧ください

コントローラーを使用して、必要なことを行います。

@Controller
public class HomeController {

    @RequestMapping(value = "/")
    public String index() {
        return "index";
    }

}

そのindex.html下にありますsrc/main/resources/templates

于 2016-09-05T20:12:07.217 に答える