JuliaでHTTP Requestを送る方法
JuliaにはHttpRequestを送る際に便利なライブラリーが用意されています。
それを使えば簡単にリクエストを行うことができます。
ただし標準で使用できるものではないため、
パッケージをインストールする必要があります。
インストールするところから始めてみましょう。
インストール
JuliaにはPkgというパッケージ管理ツールがあります。
これをJuliaのREPLからしようしてライブラリーを組み込みます。
HTTPというパッケージを以下のように取得します。
インストールできたらusingしてみましょう。
初回はコンパイルのため少し時間がかかります。
1 2 3 4 5 6 7 |
julia> using Pkg julia> Pkg.add("HTTP") ... julia> using HTTP [ Info: Precompiling HTTP [cd3eb016-35fb-5094-929b-558a96fad6f3] |
サンプル作成
これで準備が整いました。
簡単なサンプルを書いてみましょう
1 2 3 4 |
using HTTP req = HTTP.request("GET","https://www.euniclus.com") print(String(req.body)) |
これを実行するとhtmlを取得できます。
HTTP.requestにHttpメソッドとurlを渡します。
この関数が呼ばれた時点で指定したurlへリクエストが送られます。
戻り地はstatusやbodyなどのメンバ変数をもつオブジェクトです。
bodyに実際のデータが入っていますがこれをそのまま出力してもバイナリが出力されます。
String関数で文字列に変換できます。
POST Requestを送ることができます。
送られてきたPOSTデータをそのまま返却するサンプルを作ってみましょう。
1 2 3 4 5 6 |
using JSON using HTTP data = Dict("id" => 1, "name" => "euniclus" ) req = HTTP.request("POST", "http://localhost:9999/api", ["Content-Type" => "application/json"], JSON.json(data)) println(String(req.body)) |
nodejsで書いたapiサーバーを用意します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
var express = require('express') var app = express() const bodyParser = require('body-parser') app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: true })); app.post('/api', function(req, res){ data = req.body console.log(data) res.send( "Server: "+data["id"]+" "+data["name"] ) }) app.listen(9999) |
実行するとこうなります。
1 2 |
$ julia request.jl Server: 1 euniclus |
1 2 |
$ node api.js { name: 'euniclus', id: 1 } |
POSTで送られたデータがサーバーから返却されました。
GETにしろPOSTにしろ一行でリクエストが完了するのは楽でいいですね。