LoginSignup
10
2

Livebook から curl を実行する

Last updated at Posted at 2023-12-28

はじめに

CLI で API を呼び出すとき、 curl をよく使います

Livebook からもターミナルでやっているのと同じように curl を実行することができます

実装したノートブックはこちら

セットアップ

KinoCurl をインストールします

Mix.install([
  {:kino_curl, "~> 0.1.0"}
])

スマートセルの追加

KinoCurl をインストールすると、 cURL Command のスマートセルが追加できるようになります

スクリーンショット 2023-12-28 9.07.00.png

cURL Command のスマートセルを追加すると以下のような表示になります

スクリーンショット 2023-12-28 9.09.53.png

セルの中身は curl コマンドそのものですね

curl の実行

デフォルトのまま実行してみましょう

curl "https://hex.pm"

以下のような実行結果が返ってきます

%ExCurl.Response{
  body: "<!DOCTYPE html>\n<html lang=\"en\" prefix=\"og: " <> ...,
  headers: %{
    "alt-svc" => "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000",
    "cache-control" => "max-age=0, private, must-revalidate",
    "content-length" => "28933",
    "content-type" => "text/html; charset=utf-8",
    "date" => "Thu, 28 Dec 2023 00:11:16 GMT",
    "referrer-policy" => "strict-origin-when-cross-origin",
    "server" => "Cowboy",
    "strict-transport-security" => "max-age=31536000",
    "vary" => "accept-encoding",
    "via" => "1.1 google",
    "x-content-type-options" => "nosniff",
    "x-download-options" => "noopen",
    "x-frame-options" => "SAMEORIGIN",
    "x-permitted-cross-domain-policies" => "none",
    "x-request-id" => "F6TWYmeXkQ-KBCUVHnKB"
  },
  status_code: 200,
  total_time: 0,
  namelookup_time: 0,
  connect_time: 0,
  appconnect_time: 0,
  pretransfer_time: 0,
  starttransfer_time: 0,
  metrics_returned: false
}

セルの右上 <> のボタンをクリックすると、実際に実行されている Elixir のコードが確認できます

curl.gif

実態としては以下のようなコードが実行されていて、 ExCurl をラッピングしていることがわかります

response = ExCurl.get!("https://hex.pm")

各種メソッド

各種メソッドについて、 httpbin.org にリクエストを投げてみましょう

GET

curl コマンド

curl -X GET "https://httpbin.org/get?lang=elixir"

Elixir コード

response = ExCurl.get!("https://httpbin.org/get?lang=elixir")

POST

curl コマンド

curl -X POST --data '{"lang": "elixir"}' -H 'Content-Type: application/json' "https://httpbin.org/post"

Elixir コード

response =
  ExCurl.post!("https://httpbin.org/post",
    body: "{\"lang\": \"elixir\"}",
    headers: %{"Content-Type" => "application/json"}
  )

PUT

curl コマンド

curl -X PUT --data '{"lang": "elixir"}' --header 'Content-Type: application/json' "https://httpbin.org/put"

Elixir コード

response =
  ExCurl.put!("https://httpbin.org/put",
    body: "{\"lang\": \"elixir\"}",
    headers: %{"Content-Type" => "application/json"}
  )

PATCH

curl コマンド

curl -X PATCH -d 'lang=elixir' "https://httpbin.org/patch"

Elixir コード

response =
  ExCurl.patch!("https://httpbin.org/patch",
    body: "lang=elixir",
    headers: %{"Content-Type" => "application/x-www-form-urlencoded"}
  )

DELETE

curl コマンド

curl -X DELETE "https://httpbin.org/delete"

Elixir コード

response = ExCurl.delete!("https://httpbin.org/delete")

まとめ

curl コマンドをちゃんと解釈して Elixir に変換してくれるので、シェルコマンドはよくわかるけど Elixir にはまだ不慣れ、と言う人にはいいかもしれませんね

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2