Lv.6 BodyParserでTextやXml、JsonやFormやMulti-partをパースできる。[play framework2.0] [java]

body parserとは?

リクエストの中身をjavaで扱えるようにしてくれます。
Scalaの技術(Iteratee[Array[Byte])を使っているので、body parserをJavaで直接拡張すること
はできない
そうです。

※json, xml, text, アップされたファイル用などほとんどのケースに対応できるparserがデフォルトで用意されています。
すべてplay.mvc.BodyParserに格納されています。

ただ、デフォルトでいろいろなbody parser※が用意されているので、
それをもとに新しいparserクラスを作ることはできるようです。
(一応動画に独自パーサーを載せました。非常に簡単なもの)

BodyParserの使い方

BodyParserを実装したクラスはplay.mvc.Http.RequestBodyを生成するparser(int maxLength)
メソッドを持っています。
直接parserメソッドをControllerから呼び出すのではなくて、request().body()を通してパースが
実行されます。
ControllerクラスまたはActionメソッドに@BodyParser.Of(Class)アノテーションを付けることで、
どのパーサーを使うか指定できます。

[java toolbar=”false”]
@BodyParser.Of(BodyParser.Json.class)
pulic static Result index() {
RequestBody body = request().body();
ok(“Got json: ” + body.asJson());
}[/java]

自分で作成したパーサーも指定できます。

[java toolbar=”false”]@BodyParser.Of(Lv6Parser.MyParser.class)[/java]

・今回のplay framework2.0の動画。