curl を Elixir に変換
HTTPoison を使用して、curl コマンドを Elixir コードに変換します。curl2code は WebAssembly を介してブラウザ内で完全に動作するため、データは非公開に保たれます。Ruby については、curl to Ruby 変換ツールをお試しください。Go については、curl to Go をご覧ください。以下に、すぐに使える Elixir の例を掲載しています。
ブラウザから curl をコピーする方法
- 1
デベロッパーツールを開く
F12 キーを押すか、Ctrl+Shift+Iを使用してブラウザのデベロッパーツールを開きます。
- 2
ネットワークタブに移動
ネットワークタブをクリックし、HTTP リクエストをトリガーするアクションを実行します。
- 3
cURL としてコピー
リクエストを右クリック → コピー → cURL としてコピー を選択します。その後、上に貼り付けてください。
よくある質問
Elixir HTTPoisonとは何ですか?
HTTPoisonは、Erlangのhackneyライブラリをベースに構築された、Elixirで最も人気のあるHTTPクライアントです。GET、POST、ストリーミング、および非同期リクエストのためのクリーンで関数的なAPIを提供します。mix.exsのdepsに追加します:{:httpoison, "~> 2.0"}。curl2codeは、Elixir変換のデフォルトとしてHTTPoisonを使用します。
HTTPoison、Req、Tesla、Finchのどれを使うべきですか?
HTTPoisonは最も確立されており、広く使用されています。Reqはより新しく、リトライや認証などの機能が最初から含まれています。TeslaはFaradayのようなミドルウェアアーキテクチャを提供します。Finchは低レベルで、本番環境向けの高性能なクライアントです。同様の関数的なアプローチについては、curl to Clojureまたはcurl to Rubyを参照してください。
Elixirで認証を処理するにはどうすればよいですか?
ヘッダーを文字列タプルのリストとして渡します: HTTPoison.get(url, [{"Authorization", "Bearer token"}])。Basic認証の場合は、user:passをBase.encode64/1でエンコードし、値の先頭に"Basic "を付加します。レスポンスを{:ok, response}または{:error, reason}でパターンマッチします。curl2codeは-Hおよび-uフラグをElixirらしい書き方に変換します。
Elixirでマルチパートフォームデータを送信するにはどうすればよいですか?
ボディとして{:multipart, parts}を使用します:HTTPoison.post(url, {:multipart, [{:file, path, {"form-data", [{"name", "file"}, {"filename", "doc.pdf"}]}, []}]})。シンプルなフォームフィールドの場合は、{"key", "value"}タプルを追加します。curl2codeは、HTTPoisonマルチパート向けの-Fフラグを処理します。
ElixirのHTTPリクエストでエラーを処理するにはどうすればよいですか?
HTTPoisonはタグ付きタプルを返します:{:ok, response}または{:error, reason}。caseまたはwithを使用してパターンマッチングを行います:case HTTPoison.get(url) do {:ok, %{status_code: 200}'} -> ... ; {:error, %{reason: reason}'} -> ... end。これはElixirの慣習的な方法であり、例外を使わずに明示的かつ網羅的なエラー処理を行います。
Elixirで並行HTTPリクエストを行うにはどうすればよいですか?
Task.async/1とTask.await/1を使用します:tasks = urls |> Enum.map(&Task.async(fn -> HTTPoison.get(&1) end))、次にresults = tasks |> Enum.map(&Task.await/1)。ElixirのBEAM VMは、数千の並行プロセスを効率的に処理します。同様の並行性については、curl to Goを参照してください。
Elixirでタイムアウトを設定するにはどうすればよいですか?
HTTPoisonにオプションを渡します:HTTPoison.get(url, [], [timeout: 30_000, recv_timeout: 30_000])。timeoutは接続タイムアウト、recv_timeoutはレスポンスタイムアウトです(どちらもミリ秒単位)。リトライについては、試行回数を減らしながら再帰関数でラップするか、Reqライブラリの組み込みリトライ機能を使用します。
Elixirでプロキシを使用するにはどうすればよいですか?
HTTPoisonにプロキシオプションを渡します:HTTPoison.get(url, [], [proxy: {"proxy.host", 8080}])。認証が必要なプロキシの場合は、proxy_auth: {"user", "pass"}を使用します。HTTPoisonは、基盤となるhackneyライブラリを介してSOCKS5プロキシもサポートしています。curl2codeは、-xフラグをElixirのプロキシ構成に変換します。
ElixirでJSONボディを含むPOSTリクエストを送信する方法は?
curl2codeを使用して、curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URLのようなcurlのPOSTコマンドをElixirに変換します。生成されたコードではHTTPoison.post(url, Jason.encode!(body), [{'Content-Type', 'application/json'}])を使用します。curl2codeはJSONコンテンツを含む-d/--dataフラグを自動的に検出し、HTTPoisonのコードに適切なContent-Typeヘッダーを設定します。
ElixirでBearerトークン認証を追加する方法は?
curl -H "Authorization: Bearer YOUR_TOKEN" URLをcurl2codeに渡すと、認証ヘッダー[{'Authorization', 'Bearer YOUR_TOKEN'}]を含むHTTPoisonのコードが生成されます。curl2codeは-H "Authorization: Bearer ..."と--oauth2-bearerフラグの両方からBearerトークンを検出します。Basic authの場合は、-u user:passを使用してください。
ElixirでContent-Typeヘッダーを設定する方法は?
curl2codeはcurl -H "Content-Type: application/json" URLを、適切なヘッダー[{'Content-Type', 'application/json'}]を含むHTTPoisonのコードに変換します。-dデータの場合、curlはデフォルトでapplication/x-www-form-urlencodedを使用し、-Fフォームアップロードの場合はmultipart/form-dataを使用します。curl2codeはそれぞれを正しいHTTPoison APIにマッピングします。