トップ
新規
単語検索
ヘルプ
ネタ記録庫/Scala/dispatch
をテンプレートにして作成
開始行:
[[ネタ記録庫/Scala]]
* 概要 [#n4560753]
ScalaにはHTTPインタラクションを簡単に扱うためのDispatchラ...
- http://dispatch.databinder.net/Dispatch.html
- Scaladoc: http://databinder.net/dispatch-doc/#package
このライブラリを使えば非常に小さなコードでHTTPアクセスを...
また、単純な通信だけでなく、twitter,google,oauthなどの便...
* セットアップ [#ic328084]
[[ネタ記録庫/Scala/dispatch/セットアップ]]
*コード例 [#e7c01641]
** Httpレスポンスを一行ずつ標準出力に書き出すプログラム(m...
import dispatch.Http
import dispatch.Request
import scala.io.Source
object HelloDispatch {
def main(args: Array[String]) : Unit = {
wget("http://proofcafe.org/index.html") {
source =>
val lines = source.getLines()
lines.foreach(println)
}
}
def wget[T](uri : String)(callback : Source => T) : T ...
val http = new Http()
val req = new Request(uri)
http(req >~ callback)
}
}
ソースコードおよびbuild.sbtはこちら https://github.com/yo...
実行
$ sbt run
** Bitly API を利用して短縮URLを生成する関数 [#oabe135a]
使用するモジュールは以下の二つです。
- dispatch-http
- dispatch-http-json
project/build.scalaはこんな感じ。
...
libraryDependencies ++= Seq (
...
"net.databinder" %% "dispatch-http" % "0.8.5",
"net.databinder" %% "dispatch-http-json" % "0.8.5"
)
...
shorten関数の型は String => String として定義。つまりurl...
import dispatch._
import dispatch.json.JsHttp._
def shorten(url: String): String = {
val http = new Http()
val req = :/("api.bitly.com")/"v3"/("shorten?login=[ID...
http(req ># 'data ? ('url ? str))
}
*** 解説 [#c0402e48]
使用している記号とメソッドの対応
: :/(...) | dispatcy.:/.apply : String => Request
: / | RequestVerbs#/ : String => Request
: ># | JsHandlers#># : JsHttp.JsF[T] => Handler[T]
: ? | JsHttp.SymOp#? : Extract[T] => (implicit Option[Obj...
注意点
- Requestクラスのオブジェクトは暗黙の変換Request.toReques...
- Requestクラスのオブジェクトは暗黙の変換JsHttp.requestTo...
JsHandlers型に変換されてから >#メソッドが呼ばれている。
- JsHttpオブジェクトで定義されているimplicit defによって...
- ラベル(シングルクォートで始まるリテラル)はscalaのシンボ...
- Symbol型のオブジェクトは暗黙の変換JsHttp.sym_add_operat...
- JsHttp.SymOp#?メソッドは第二引数引数として暗黙のOption[...
- strはJsHttpで定義されている。 JsHttp.str : Extract[Stri...
- ># メソッドの引数として渡しているオブジェクトははChild[...
- Http#apply : Handler[T] => Http.HttpPackage[T] なので最...
- GAE(google appengine)で使用する場合はnew Http()ではなく...
以上をふまえて、暗黙の変換やimportなどをいっさい省略せず...
import dispatch.Http
import dispatch.:/
import dispatch.Request
import dispatch.json.JsHandlers
import dispatch.json.JsHttp
def shorten(url: String): String = {
val http = new Http()
val req : Request =
Request.toRequestVerbs(
Request.toRequestVerbs((:/.apply("api.bitly.com")...
)./("shorten?login=[ID]&apiKey=[KEY]&longUrl="+url+...
http.apply(
JsHttp.requestToJsHandlers(req).>#(
JsHttp.ext2fun(
JsHttp.sym_add_operators('data).?(
JsHttp.sym_add_operators('url).?(JsHttp.str)(...
)(JsHttp.ctx)
)
)
)
}
終了行:
[[ネタ記録庫/Scala]]
* 概要 [#n4560753]
ScalaにはHTTPインタラクションを簡単に扱うためのDispatchラ...
- http://dispatch.databinder.net/Dispatch.html
- Scaladoc: http://databinder.net/dispatch-doc/#package
このライブラリを使えば非常に小さなコードでHTTPアクセスを...
また、単純な通信だけでなく、twitter,google,oauthなどの便...
* セットアップ [#ic328084]
[[ネタ記録庫/Scala/dispatch/セットアップ]]
*コード例 [#e7c01641]
** Httpレスポンスを一行ずつ標準出力に書き出すプログラム(m...
import dispatch.Http
import dispatch.Request
import scala.io.Source
object HelloDispatch {
def main(args: Array[String]) : Unit = {
wget("http://proofcafe.org/index.html") {
source =>
val lines = source.getLines()
lines.foreach(println)
}
}
def wget[T](uri : String)(callback : Source => T) : T ...
val http = new Http()
val req = new Request(uri)
http(req >~ callback)
}
}
ソースコードおよびbuild.sbtはこちら https://github.com/yo...
実行
$ sbt run
** Bitly API を利用して短縮URLを生成する関数 [#oabe135a]
使用するモジュールは以下の二つです。
- dispatch-http
- dispatch-http-json
project/build.scalaはこんな感じ。
...
libraryDependencies ++= Seq (
...
"net.databinder" %% "dispatch-http" % "0.8.5",
"net.databinder" %% "dispatch-http-json" % "0.8.5"
)
...
shorten関数の型は String => String として定義。つまりurl...
import dispatch._
import dispatch.json.JsHttp._
def shorten(url: String): String = {
val http = new Http()
val req = :/("api.bitly.com")/"v3"/("shorten?login=[ID...
http(req ># 'data ? ('url ? str))
}
*** 解説 [#c0402e48]
使用している記号とメソッドの対応
: :/(...) | dispatcy.:/.apply : String => Request
: / | RequestVerbs#/ : String => Request
: ># | JsHandlers#># : JsHttp.JsF[T] => Handler[T]
: ? | JsHttp.SymOp#? : Extract[T] => (implicit Option[Obj...
注意点
- Requestクラスのオブジェクトは暗黙の変換Request.toReques...
- Requestクラスのオブジェクトは暗黙の変換JsHttp.requestTo...
JsHandlers型に変換されてから >#メソッドが呼ばれている。
- JsHttpオブジェクトで定義されているimplicit defによって...
- ラベル(シングルクォートで始まるリテラル)はscalaのシンボ...
- Symbol型のオブジェクトは暗黙の変換JsHttp.sym_add_operat...
- JsHttp.SymOp#?メソッドは第二引数引数として暗黙のOption[...
- strはJsHttpで定義されている。 JsHttp.str : Extract[Stri...
- ># メソッドの引数として渡しているオブジェクトははChild[...
- Http#apply : Handler[T] => Http.HttpPackage[T] なので最...
- GAE(google appengine)で使用する場合はnew Http()ではなく...
以上をふまえて、暗黙の変換やimportなどをいっさい省略せず...
import dispatch.Http
import dispatch.:/
import dispatch.Request
import dispatch.json.JsHandlers
import dispatch.json.JsHttp
def shorten(url: String): String = {
val http = new Http()
val req : Request =
Request.toRequestVerbs(
Request.toRequestVerbs((:/.apply("api.bitly.com")...
)./("shorten?login=[ID]&apiKey=[KEY]&longUrl="+url+...
http.apply(
JsHttp.requestToJsHandlers(req).>#(
JsHttp.ext2fun(
JsHttp.sym_add_operators('data).?(
JsHttp.sym_add_operators('url).?(JsHttp.str)(...
)(JsHttp.ctx)
)
)
)
}
ページ名: