私は scala ディスパッチ ライブラリを使用して、Lift 内のサーバーにポスト リクエストを送信したいと考えています。
投稿リクエストを外部サーバーに送信して情報を取得し、この情報を Web アプリで使用したいと考えています。
これどうやってするの?
私は scala ディスパッチ ライブラリを使用して、Lift 内のサーバーにポスト リクエストを送信したいと考えています。
投稿リクエストを外部サーバーに送信して情報を取得し、この情報を Web アプリで使用したいと考えています。
これどうやってするの?
REST 呼び出しをサーバーにディスパッチするスニペットを次に示します。
val http = new Http
val call = parse(event.call)
val verbspec = (call \ "verb").values toString
val urlspec = (call \ "url").values toString
val namespec = (call \ "username").values toString
val pwspec = (call \ "password").values toString
val req = url(urlspec).as(namespec, pwspec) <:< Map("Content" -> "application/json")
val (status: Int, contentWrap, headers) = verbspec match {
case "GET" => {
http x (( req >:> identity ) {
case (200, _, Some(thing), out) => {
val resp = fromInputStream(thing.getContent()).getLines.mkString
(200, Some(resp), out())
}
case (badCode, _, _, out) => (badCode, None, out())
})
}
case "POST" => {
http x (( req.POST << (event.payload) >:> identity ) {case (status, _, _, out) => (status, None, out()) })
}
case "PUT" => {
http x (( req.PUT <<< (event.payload) >:> identity ) {case (status, _, _, out) => (status, None, out()) })
}
case _ => {
EventHandler.error(this, "Bad verb specified")
(000, None, Map.empty)
}
}
どこ:
event.call
-> 呼び出しを指定する json
event.payload
-> PUT および POST の json ペイロード
http x
-> http://databinder.net/dispatch-doc/#dispatch.Http
>:>
-> http://databinder.net/dispatch-doc/#dispatch.HandlerVerbs
<<
, <<<
, <:<
-> http://databinder.net/dispatch-doc/#dispatch.RequestVerbs
これは、Lift JSON を使用して呼び出し仕様を解析し、Akka アクターで実行します。ステータス、ヘッダー、およびコンテンツが呼び出し元のアクターに返されます。
Lift GitHub Wiki ( Assembla oneに置き換えられています) には、探しているものに沿ったDispatch の使用に関する記事があります。