JavaScriptを有効にしてください

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

 ·  ☕ 1 分で読めます

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

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

環境

  • Elixir 1.14.2

HTTPoisonのインストール

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

1
2
3
4
5
defp deps do
  [
      {:httpoison, "~> 1.8"},
  ]
end

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

基本的な使い方

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

Get

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

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

Post

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

レスポンスの扱い方

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 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} タプルで返します。
エラーハンドリングは以下のように行います。

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

参考

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer