HypermediaでREST APIを使用するui ルーターを備えたAngularJSアプリケーションがあります。一般的な考え方は、API にさまざまな呼び出しの URL を生成させ、クライアントが URL 自体を作成しないようにすることです。
たとえば、製品のリストを取得する場合、API は次のように返します。
[
{
"id": 1,
"name": "Product A",
"_links": {
"self": {
"href": "http://localhost:4444/api/products/1",
"name": null,
"templated": false
},
"actions": []
}
},
{
"id": 2,
"name": "Product B",
"_links": {
"self": {
"href": "http://localhost:4444/api/products/2",
"name": null,
"templated": false
},
"actions": []
}
}
]
問題は、製品の詳細に移動したいということです。コレクションのハイパーメディアから API の URL を入手できます。ただし、状態を変更すると、詳細状態のコントローラーが製品をフェッチできるように、この URL を詳細状態に渡す必要があります。
UI URL は API URL から完全に切り離されています。つまり、クライアントには独自の URL スキームがあります。
クライアントをステートレスに保ち、各ページをブックマーク可能に保ちながら、これを達成する最良の方法は何ですか?
ui router
1 つの解決策は、のdata
プロパティで URL を渡すことです。ただし、ページはブックマーク可能ではありません。もう 1 つの方法は、UI url で API url を渡すことです。これにより、(API url が変更されない限り) ページをブックマーク可能に保つことができますが、UI url は非常に見苦しくなります。
他の考えはありますか?
私がこれについて非常に間違っていない限り、私はテンプレート化されたソリューション、つまり API がクライアントによってパラメーターを挿入する必要がある URL のテンプレートを返すソリューションを探していません。要点は、一部の URL は上記の例よりもかなり複雑であるため、URL には既にデータが取り込まれているということです。