【Elixir】HTTPoison を使って API などの通信を行ってみる
Elixir で HTTP通信ができる HTTPoison を使って API などの通信を行ってみる
環境
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
|
参考