ネタ記録庫/Scala

ScalaにはHTTPインタラクションを簡単に扱うためのDispatchライブラリというのがあります。

このライブラリを使えば非常に小さなコードでHTTPアクセスを実現できますが、implicit definitionやなぞの演算子や記号クラスを使っているために少し慣れが必要になります。

また、単純な通信だけでなく、twitter,google,oauthなどの便利機能も備えています。(2011/07/03時点(v 0.8.3))

コード例 †

Bitly API を利用してURLを短縮する †

shorten関数の型は String => String

import dispatch._
import dispatch.json.JsHttp._
import dispatch.json.Js._
 
def shorten(url: String): String = {
  val http = new Http()
  val req = :/("api.bitly.com")/"v3"/("shorten?login=[ID]&apiKey=[KEY]&longUrl="+url+"&format=json")
  http(req ># 'data ? ('url ? str))
}

注意点

  • [ID]のところにはBitlyアカウントのID, [KEY]のところにはAPI KEYを当てはめる
  • >#メソッドはJsHandler?クラスで定義されるメソッドで型は JsHttp?.JsF[T] -> Handler[T]
  • JsHttp?オブジェクトで定義されているimplicit defによって、Request型はJsHandlers?型に変換される
  • ラベル(クォートで始まるリテラル)はJsHttp?オブジェクトで定義されているimplicit defによってSymOp?型に変換される
  • GAE(google appengine)で使用する場合はnew Http()ではなくnew gae.Http()を使う
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS