- 追加された行はこの色です。
- 削除された行はこの色です。
[[ネタ記録庫/Scala]]
ScalaにはHTTPインタラクションを簡単に扱うためのDispatchライブラリというのがあります。
- http://dispatch.databinder.net/Dispatch.html
- Scaladoc: http://databinder.net/dispatch-doc/#package
このライブラリを使えば非常に小さなコードでHTTPアクセスを実現できますが、implicit definitionやなぞの演算子や記号クラスを使っているために少し慣れが必要になります。
また、単純な通信だけでなく、twitter,google,oauthなどの便利機能も備えています。(2011/07/03時点(v 0.8.3))
*コード例 [#e7c01641]
** Bitly API を利用してURLを短縮する [#oabe135a]
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()を使う