2

play が /some/{id} に一致することはわかっています。私たちが望んでいるのは、非同期のものの能力が本当に好きなので、プレイするためにプロトタイプを移植するかもしれないので、もう少し複雑です.

私たちはそのようなURLを持っています

/services/<moduleA>/<moduleB>/....

そして、私が本当に欲しいのは、このようなパターンです

/services/{capture-all-of the modules}

既存のシステムでは、10 個のモジュールがあり、3 個になる可能性もありますが、クライアントはモジュールを結合する方法を決定し、戻ってくるデータはその URL に基づいて各モジュールを介してパイプされます。プレイフレームワークでこれを行う可能性はありますか?

ありがとう、ディーン

4

1 に答える 1

4

/services/ で始まるすべての URL をキャプチャし、独自の requestDispatcher (テストされていません) を作成できます。

//routes
GET     /services/*toBeRouted    controllers.Dispatcher.dispatch(toBeRouted: String)

//Dispatcher object
def dispatch(toBeRouted: String) = Action { implicit request => 
    toBeRouted.split("/") match {
        case Nil => BadRequest(views.html.default.wrongModule())
        case _ => {
            ...//Route to the right controller
        }
    }
}

重要:複数のスラッシュにまたがるパスのルールは、コロンではなくアスタリスクを使用する必要があります:*toBeRouted

regexpを使用して、routes ファイル内の有効なパターンのみをキャプチャするために、もう少し先に進むことができます。

于 2012-07-16T15:39:11.120 に答える