私が開発しているangular 2.0アプリケーションのバックエンドとしてsparkを使用しています。angle 2.0/sparkシングルページアプリケーションのクライアント側ルーティングを正しく設定するにはどうすればよいですか?
私は最初のindex.htmlのように、sparkを使用しています。
import spark.Spark.*;
public class Browser {
public static void main(String [] args) {
staticFiles.location("/public");
get("/hello/", (req, res) -> "Hello World");
}
}
これは、今私はいくつかのクライアント側のルーティングを設定しようとしています、しかしindex.htmlを
の私の最初のサービングのために正常に動作しています。大部分は、this tutorialに続いていくつか小さな変化があります。今
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { MetadataDisplayComponent } from './metadata-display.component';
const routes: Routes = [
{ path : '', redirectTo: '/metadata/', pathMatch: 'full'},
{ path : 'metadata/:path', component: MetadataDisplayComponent}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule{}
、私は、ブラウザのURLバーをナビゲートする場合は、「ローカルホスト:8050」に、そしてその後のindex.htmlが提供され、クライアント側のコードは、リダイレクトされた後、私の「MetadataDisplayComponent」を表示します。このため、コンポーネントが正しくインポート/使用されていることがわかります。
ただし、ブラウザのURLバーに "metadata/foo"と入力すると、404エラーが表示されます。私は私のスパークバックエンドで
metadata/foo
ルートを持っていないためであると考えています。しかし、私は以前のようにindex.htmlをロードしてから、適切なコンポーネントを切り替えるためにクライアント側のルーティングを呼び出すようにしたいと思います。
ブラウザのURLバーにURLを入力し、最初のindex.htmlのみを読み込み、そこからクライアント側のルーティングを引き継ぐようにアプリを設定するにはどうすればよいですか?
EDIT This article私の問題を十分に明確に表現しているようです。バックエンドへのすべてのリクエストを同じindex.htmlファイルにリダイレクトする方法が必要です。