2017-05-03 26 views
6

クライアント上でReactを使用し、REST API用にサーバー上でJava Spring Bootを使用する場合は、クライアントとサーバーの両方がパッケージ化され、同じアプリケーションサーバー上でホストされます。ReactのBrowserRouterをクライアントで使用し、Java REST API(Spring Boot)をサーバー上で使用する方法は?

私はすでに/apiパス経由でサーバーAPIに問い合わせることができます。

HashRouterではなく、BrowserRouterreact-router-dom(ルータv4)をクライアントで使用することはできますか。

私はSpring Bootもよくわかりませんが、ルートが/apiと一致していない場合はサーバーをチェックできて、HTTPクエリの場所パスに基づいてルートを処理するすべての反応ロジックを持つindex.htmlを返します?

私は明らかに希望しています。私はURLにハッシュを入れたくないので、ルーティングはクライアント上で行う必要があります。

答えて

0

最終的にすべてのGETリクエストをキャッチしてReactアプリを返す方法を見つけました。それは致命的で単純でした。*というワイルドカードを使用してください。/*は機能しません。この例では

@GetMapping("*") 
public ModelAndView defaultPage(Map<String, Object> model) { 
    model.put("contextPath", contextPath); 
    return new ModelAndView("index", model); 
} 

、このファイルにインデックスポイント/src/main/resources/static/index.html

1

かなり古いが、一般的に、あなたが必要となるすべては最初のAPIと一致して、他のすべてと一致し、インデックスを返すようにワイルドカードを持つことです...

この方法で任意のディープリンクがまだ提供することによって、働くだろう反応しているアプリケーションのルート。ブラウザが保持しているURLを反応ルータが取得します。

Springは、索引付けするすべてをルーティングするものとして、@RequestMapping(value = "/")という単純なものを処理する必要があります。あなたが/ api /を指定すると、より具体的で優先されると思います。

+0

おかげで、これは私がしようとしたものですが、(受け入れ答えを確認してください)今、それをコーディングする方法それまでは見つかりませんでした。 –

関連する問題