PlayFramework2.x のWS実装
これは極論WebSocketWebServiceの略(2012/12/15:totoshiさん指摘:
☓WebSocket○WebService)。
- play.api.libs.ws.WS
WS ライブラリ
基本的にHTMLに対し特化していると思って良い。
そのため、Ideaなどで眺めると、urlとか、その先の、get/post/put/delete といったメソッドがあるのが見えるはずだ。
val qiita:Promise[Response] = WS.url("https://qiita.com/api/v1/items").get()
Promise は予約みたいなもので、Response は実通信データの戻り値だ。
また、Responseは body:String, json:JsValue, xml:scala.xml.Elem の形式で取得できる。
WS.url("https://qiita.com/api/v1/items").get().map(_.json).await
デフォルトでは上記形式だが、バイナリで拾いたいとかの場合、Responseには getAHCResponse 関数もある。
これはningの非同期HTTPクラアイアントのデータ型で、根っこはこれで実装されている。
制約
WSリブラリは、Playのアプリケーションが初期化済みでなければ正常に動作しない。
WS.scala の実装を眺めればわかるのだが、アプリケーション設定に依存する部分があるため、例えばテスト等でWSライブラリを使いたい場合、擬似的にサーバを立てるテストを書く必要がある。
サンプル
基本的な使い方しかしていないものの、ザクッとサンプルを立てた。
Qiita より、記事を引っこ抜いてRSSに編集してるだけなのだが、、、、。
DBへのキャッシュとか記事の種別とかは後で追加する予定(1月位か?)