Java
HTML
Scala
PlayFramework

PlayFramework2.0 のWSライブラリを試してみる

More than 5 years have passed since last update.


PlayFramework2.x のWS実装

これは極論WebSocketWebServiceの略(2012/12/15:totoshiさん指摘:

☓WebSocket○WebService)。


  • play.api.libs.ws.WS

http://www.playframework.org/documentation/2.0.4/ScalaWS


WS ライブラリ

基本的にHTMLに対し特化していると思って良い。

そのため、Ideaなどで眺めると、urlとか、その先の、get/post/put/delete といったメソッドがあるのが見えるはずだ。


qiita.scala

val qiita:Promise[Response] = WS.url("https://qiita.com/api/v1/items").get()


Promise は予約みたいなもので、Response は実通信データの戻り値だ。

また、Responseは body:String, json:JsValue, xml:scala.xml.Elem の形式で取得できる。


qiita.scala

WS.url("https://qiita.com/api/v1/items").get().map(_.json).await


デフォルトでは上記形式だが、バイナリで拾いたいとかの場合、Responseには getAHCResponse 関数もある。

これはningの非同期HTTPクラアイアントのデータ型で、根っこはこれで実装されている。


制約

WSリブラリは、Playのアプリケーションが初期化済みでなければ正常に動作しない。

WS.scala の実装を眺めればわかるのだが、アプリケーション設定に依存する部分があるため、例えばテスト等でWSライブラリを使いたい場合、擬似的にサーバを立てるテストを書く必要がある。


サンプル

基本的な使い方しかしていないものの、ザクッとサンプルを立てた。

Qiita より、記事を引っこ抜いてRSSに編集してるだけなのだが、、、、。

https://github.com/Sunao-Yoshii/qiita-rss

DBへのキャッシュとか記事の種別とかは後で追加する予定(1月位か?)