curl を Elixir に変換

HTTPoison を使用して、curl コマンドを Elixir コードに変換します。curl2code は WebAssembly を介してブラウザ内で完全に動作するため、データは非公開に保たれます。Ruby については、curl to Ruby 変換ツールをお試しください。Go については、curl to Go をご覧ください。以下に、すぐに使える Elixir の例を掲載しています。

ブラウザから curl をコピーする方法

  1. 1

    デベロッパーツールを開く

    F12 キーを押すか、Ctrl+Shift+Iを使用してブラウザのデベロッパーツールを開きます。

  2. 2

    ネットワークタブに移動

    ネットワークタブをクリックし、HTTP リクエストをトリガーするアクションを実行します。

  3. 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:passBase.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/1Task.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にマッピングします。

便利なリンク

curl ガイド

curl を他の言語に変換