Copy & Paste Engineer

【Elixir】HTTPoison を使って API などの通信を行ってみる

【Elixir】HTTPoison を使って API などの通信を行ってみる

Elixir で HTTP通信ができる HTTPoison を使って API などの通信を行ってみる

環境

HTTPoisonのインストール

mix.exs ファイルのdeps関数にHTTPoisonを追加し、アプリケーションの依存関係を更新します。

defp deps do
  [
      {:httpoison, "~> 1.8"},
  ]
end

mix deps.get を実行してインストールします。

基本的な使い方

HTTPoisonを使ってGETリクエストを送信し、レスポンスを受け取ります。

Get

GETでデータを取得してみます。

{:ok, response} = HTTPoison.get("https://c-a-p-engineer.github.io/index.json")

Post

{:ok, response} =
  HTTPoison.post(
    "https://c-a-p-engineer.github.io/index.json", # URL
    "{\"key\":\"value\"}", # JSON
    [{"Content-Type", "application/json"}] # Header
  )

レスポンスの扱い方

レスポンスは %HTTPoison.Response{} 構造体で返されます。 ステータスコード、ヘッダー、ボディを取得する方法は以下の通りです。

# StatusCode
status_code = response.status_code
# Header
headers = response.headers
# Body
body = response.body

IO.inspect("status")
IO.inspect(status_code)
IO.inspect("headers")
IO.inspect(headers)
IO.inspect("body")
IO.inspect(body)

エラーハンドリング

HTTPoison はエラーを {:error, reason} タプルで返します。 エラーハンドリングは以下のように行います。

case HTTPoison.get("https://c-a-p-engineer.github.io/index.json") do
  {:ok, response} ->
    # 成功時の処理
  {:error, %HTTPoison.Error{reason: reason}} ->
    # エラー時の処理
end

参考