HTTP.jl パッケージ

JuliaからWeb APIを呼び出すためには、HTTP.jlパッケージが必要になる。

JuliaにHTTPパッケージを追加していないと、次のエラーメッセージが表示される。

ERROR: LoadError: ArgumentError: Package HTTP not found in current path:
- Run `import Pkg; Pkg.add("HTTP")` to install the HTTP package.

Stacktrace:
[1] require(::Module, ::Symbol) at .\loading.jl:823
[2] include at .\boot.jl:326 [inlined]
[3] include_relative(::Module, ::String) at .\loading.jl:1038
[4] include(::Module, ::String) at .\sysimg.jl:29
[5] exec_options(::Base.JLOptions) at .\client.jl:267
[6] _start() at .\client.jl:436
in expression starting at C:\Users\tsuka\Documents\examples\julia\edinet.jl:1

JuliaにHTTPパッケージを追加するには、REPLから Pkg.add を実行する。

julia> using Pkg
julia> Pkg.add("HTTP")

JuliaからWeb APIを呼び出すサンプルとして、金融庁の電子開示システム「EDINET」の書類一覧APIを使って、メタデータを取得する例を示す。

using HTTP

# 書類一覧APIのエンドポイント
url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json"

# 書類一覧APIのリクエストパラメータ
params = Dict("date" => "2019-04-25")

# 書類一覧APIの呼び出し
res = HTTP.get(url; require_ssl_verification = false, query = params)

# レスポンスの表示
println(String(res.body))

request()

HTTP.request() はHTTPリクエストメッセージを送信して、レスポンスメッセージを返す。

HTTP.request(method, url) -> HTTP.response
HTTP.request(method, url, headers) -> HTTP.response
HTTP.request(method, url, headers, body) -> HTTP.response

パラメータ

HTTP.request() には次のパラメータを指定できる。

method
HTTPメソッドを指定する。
method
メソッド
GET
POST
PUT
url
リクエストメッセージを送信するURLを指定する。
headers
HTTPヘッダを指定する。

キーワードパラメータ

HTTP.request()には、次に示すキーワードパラメータを指定できる。

proxy
プロキシのURLを指定する。
query
URLのクエリパラメータを置き換える。
using HTTP
url ="http://example.com/"
params = Dict("date" => "2019-04-25")
res = HTTP.get(url; query = params)
      
require_ssl_verification
SSL証明書の検証を要求する。
retries
リトライの回数を指定する。
using HTTP
url ="http://example.com/"
res = HTTP.get(url; retries = 4)
verbose
1または2に設定すると、追加のメッセージロギングが行われる。

サンプル

HTTPリスクエストメッセージを送信して、HTTPレスポンスメッセージを受信する例を次に示す。

using HTTP
r = HTTP.request("GET", "http://example.com/")
println(r.request)
println(r.version)
println(r.status)
println(r.headers)
println(String(r.body))

get()

HTTP.get() はHTTPリクエストメッセージをGETメソッドで送信して、レスポンスメッセージを返す。

HTTP.get(url) -> HTTP.response
HTTP.get(url, headers) -> HTTP.response
HTTP.get(url, headers, body) -> HTTP.response

post()

HTTP.post() はHTTPリクエストメッセージをPOSTメソッドで送信して、レスポンスメッセージを返す。

HTTP.post(url) -> HTTP.response
HTTP.post(url, headers) -> HTTP.response
HTTP.post(url, headers, body) -> HTTP.response

put()

HTTP.put() はHTTPリクエストメッセージをPUTメソッドで送信して、レスポンスメッセージを返す。

HTTP.put(url) -> HTTP.response
HTTP.put(url, headers) -> HTTP.response
HTTP.put(url, headers, body) -> HTTP.response