2016-09-26 9 views
1

EmberフロントエンドとSpringブートバックエンドがあります。 Emberがポート4200でスタンドアロンを実行し、8080でSpring Bootバックエンドを実行すると、すべてが機能します。しかし、このシナリオは、CORSの問題だけでなく、本番環境では多少珍しいものです。バックエンドのURLは、Emberアプリケーションのビルド時(!)にすでに認識されている必要があります。これは、コンパイル済みのEmberアプリケーション内に統合されているためです。これは多くのプロジェクトでは不可能です。したがって、フロントエンドのEmber AppをSpring Bootバックエンドに統合したいと考えています。 AngularJSを伴うSPA Emberアプリ(from/dist)はsrc/main/resource/staticにコピーされます。非常にうまく動作するEmberアプリでrootURLとAPI.hostを調整した後。 ブラウザでURLの手動リロードが行われたときに問題が発生しました。このようなURLはEmberのルートになりました。 http-requestは、ルートを知らないSpringブートバックエンドに到着し、404エラーが発生します。SpringMVCでemberjsルートを設定するには?

Emberアプリケーションが作業を継続してリクエストを処理できるように、SpringMVC(Springブートバックエンドの一部として)がそのようなルートのhttpRequestにどのように答えるべきですか?

HTML Page request (by browser) 
http://host/springBootAppContext/index.html => src/main/resource/static/index.html (ember app) 

REST API request (by Ember App) 
http://host/springBootAppContext/users => RESTController mapped for /users 

Ember Routing (by Ember App) 
http://host/springBootAppContext/user-list => ??? 

のModelView応答は、さまざまなソリューションのテストがある私が思いついた後

答えて

1

存在しないユーザー-するlist.htmlまたは類似としてinterpretetがあるので、あなたは、通常のSpring MVC @Controllerクラスを提供できません本当にシンプルなもので。 通常の非RESTコントローラに、emberアプリケーションによって定義されたすべてのルートに対する要求マッピングを提供します。そのような要求はすべて、emberアプリの開始ページ(ほとんどの場合index.html)のビュー名で回答する必要があります。ブラウザはそのHTMLページを読み込み、包含するemberアプリケーションを開始します。 emberアプリケーションはルートを検出し(ルートはhttp要求の一部であったため)、指定されたすべてのルート構成(テンプレート、モデル、コントローラ)に従って動作します。

No 404 NotFound

@Controller 
public class EmberRouteController { 

public static final String INDEX = "index.html"; 

@RequestMapping(value = "/ember-route-1", method = RequestMethod.GET) 
public String emberRoute1() { 
    return INDEX; 
} 

@RequestMapping(value = "/ember-route-2", method = RequestMethod.GET) 
public String emberRoute2() { 
    return INDEX; 
} 

}

0

前の答えは私をたくさん助けました。しかし、私はまだ各ルートのバックエンドAPIを作成するよりも優れたソリューションを考えていました。そして、より良い解決策がemberルートの前に '#'を置くと、emberルートがバックエンドサーバに行くのではなく要求を提供することになると感じます。

Router.reopen({ location: 'hash' });

例:http://localhost:8008/#/first

は、ここに最初に私のルートです。 URLに#を入れて、ページのリロードが機能しています。

希望すると、これが役立ちます。

関連する問題