4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Play or ScalaAdvent Calendar 2012

Day 16

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

Last updated at Posted at 2012-12-15

PlayFramework2.x のWS実装

これは極論WebSocketWebServiceの略(2012/12/15:totoshiさん指摘:
☓WebSocket○WebService)。

  • play.api.libs.ws.WS

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に編集してるだけなのだが、、、、。

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

4
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?