Skip to content

Latest commit

 

History

History
32 lines (26 loc) · 3.73 KB

AggregatingReverseRouters.md

File metadata and controls

32 lines (26 loc) · 3.73 KB

リバースルートの統合

いくつかの状況において、互いに依存していないサブプロジェクト間でリバースルートを共有したくなることがあります。

例えば、web サブプロジェクトと api サブプロジェクト があるとします。web プロジェクトは api プロジェクトへのリンクを (AJAX 呼び出しのために) レンダリングする一方で、api プロジェクトは web へのリンク (JSON 内のリソースに対する web リンク) をレンダリングすることを除いては、これらのサブプロジェクトはお互いに依存関係を持ちません。このような場合、リバースルータを使うと便利ですが、これらのプロジェクトはお互いに依存していないため、使えません。

Play のルートコンパイラには、共通の依存性がこれに依存するプロジェクト用にリバースルータを生成できるようにすることで、これらのプロジェクト間でリバースルートを共有できるようにする機能があります。以下のように、aggregateReverseRoutes sbt 設定項目を使って設定することができます:

@content

上記のセットアップでは、apiweb に対するリバースルートは common プロジェクトの一部として生成されます。apiweb に対するリバースルータは依存する common プロジェクトにて既に生成されているため、生成する必要はなく、apiweb 用のリバースルータではなくフォワードルータが生成されます。

common プロジェクトは明示的に Project 型と宣言されていることに注意してください。dependes メソッドと aggregateReverseRoutes 設定によって、api および web プロジェクト間には再帰的な依存関係があるため、Scala の型チェッカは再帰チェーン内にどこかにおいて、明示的な型を必要とします。