私には2つのアクションがあります。1 つ目は単一のアセットを提供し、2 つ目は 1 つのアセットに結合されたすべての単一アセットを提供する必要があります。したがって、私の考えは、結合されたアセットを提供する 2 番目のアクションから、単一のアセットを提供する最初のアクションを呼び出すことでした。ファイル システムからアセットを直接読み込んで組み合わせることができるので、これは悪い考えだと言う人もいるでしょう。しかし、これは不可能です。なぜなら、最初のアクションは他のアクションと連鎖して、資産に対していくつかの追加操作 (フィンガープリントなど) を実行するからです。
だからここに私の行動があります:
1 つ目は、1 つのアセットを提供します。この実装では、チェーン内の次のアクションのみを呼び出します。
abstract override def at(path: String, file: String): Action[AnyContent] = {
super.at(path, file)
}
2 つ目は、ファイルのリストを JSON として受け入れます。次に、リストを反復処理し、単一のファイルで最初のアクションを呼び出します。
def consolidate = Action(parse.json) { request =>
val files = request.body.as[List[String]]
for (file <- files) {
val action = at(path, new URL(file).getPath.substring(1))
val result = action.apply(request)
}
Ok()
}
今私の問題は、アセットを文字列として取得するにはどうすればよいですか? 変数結果にはIteratee[Array[Byte], Result]
. そこから資産データを抽出するにはどうすればよいですか?
play.api.test.HelperオブジェクトにはcontentAsStringとcontentAsBytesメソッドが含まれています。しかし、これは私をさらに助けません!