curl を OCaml に変換
Cohttp を使用して、curl コマンドを OCaml コードに変換します。curl2code は WebAssembly を介してブラウザ内で完全に動作するため、データは非公開に保たれます。Rust については、curl to Rust 変換ツールをお試しください。Elixir については、curl to Elixir をご覧ください。以下に、すぐに使える OCaml の例を掲載しています。
ブラウザから curl をコピーする方法
- 1
デベロッパーツールを開く
F12 キーを押すか、Ctrl+Shift+Iを使用してブラウザのデベロッパーツールを開きます。
- 2
ネットワークタブに移動
ネットワークタブをクリックし、HTTP リクエストをトリガーするアクションを実行します。
- 3
cURL としてコピー
リクエストを右クリック → コピー → cURL としてコピー を選択します。その後、上に貼り付けてください。
よくある質問
OCaml Cohttp とは何ですか?
Cohttp は、OCaml 用の標準的な HTTP クライアントおよびサーバーライブラリです。並行 I/O のために Lwt(軽量スレッド)と Async の両方のバックエンドをサポートしています。opam install cohttp-lwt-unix でインストールできます。HTTP リクエストのための型安全で関数的な API を提供します。curl2code は、すべての OCaml 変換に Cohttp を使用します。
Cohttp、ocurl、piaf のどれを使うべきですか?
Cohttp は、Lwt/Async サポートを備えた標準的な OCaml HTTP ライブラリです。ocurl は libcurl をラップしており、OCaml からすべての curl 機能にアクセスできます。piaf はより新しく、HTTP/2 ネイティブです。慣用的な OCaml には Cohttp を、curl 固有の機能が必要な場合は ocurl を使用してください。同様の関数型言語については、curl to Elixir または curl to Clojure を参照してください。
OCaml で認証を処理するにはどうすればよいですか?
リクエストに Authorization ヘッダーを追加します:Header.add headers "Authorization" ("Bearer " ^ token)。Basic 認証の場合は、base64 パッケージを使用して認証情報を Base64 エンコードします。Cohttp のヘッダーは不変(immutable)であるため、Header.of_list で構築するか、Header.add 呼び出しをチェーンさせます。
OCaml でマルチパートフォームデータを送信するにはどうすればよいですか?
バウンダリ文字列を使用してマルチパートボディを手動で構築するか、multipart_form のようなライブラリを使用します。バウンダリを含む Content-Type ヘッダーを設定してください。Cohttp のボディは単純な文字列またはストリームです。RFC 2046 に従ってマルチパートペイロードをフォーマットします。curl2code は -F フラグの変換を処理します。
OCaml の HTTP リクエストでエラーを処理するにはどうすればよいですか?
Lwt を使用した Cohttp は promise を返します。エラー処理には Lwt.catch または try%lwt ... with 構文を使用します。Response.status response でレスポンスステータスコードを確認してください。OCaml の型システムにより、失敗ケースの処理が保証されます。網羅的な処理のために、ステータスコードに対してパターンマッチングを使用してください。
OCaml で並行 HTTP リクエストを行うにはどうすればよいですか?
Lwt バックエンドの場合:並列実行には Lwt.all [request1; request2] を、URL のマッピングには Lwt_list.map_p を使用します。Async の場合:Deferred.all を使用します。Lwt または Async による OCaml の協調的並行性は、スレッドセーフの懸念なしに安全で効率的な並行 I/O を提供します。
OCaml でタイムアウトを設定するにはどうすればよいですか?
Lwt では、Lwt.pick [request; Lwt_unix.sleep timeout >>= fun () -> Lwt.fail Timeout] を使用して、リクエストとタイマーを競わせます。Cohttp には組み込みのタイムアウトオプションがないため、Lwt promise をタイムアウトコンビネータでラップします。リトライについては、試行回数を減らしながら再帰関数を実装します。
OCaml でプロキシを使用するにはどうすればよいですか?
Cohttp には組み込みのプロキシサポートはありません。プロキシが必要な場合は ocurl (libcurl バインディング) を使用し、CURLOPT_PROXY オプションを設定してください。あるいは、HTTP_PROXY 環境変数を設定し、プロキシホストとポートを経由するように手動で接続を構成します。
OCamlでJSONボディを含むPOSTリクエストを送信する方法は?
curl2codeを使用して、curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URLのようなcurlのPOSTコマンドをOCamlに変換します。生成されたコードではClient.post ~body:(Cohttp_lwt.Body.of_string json) uriを使用します。curl2codeはJSONコンテンツを含む-d/--dataフラグを自動的に検出し、Cohttpのコードに適切なContent-Typeヘッダーを設定します。
OCamlでBearerトークン認証を追加する方法は?
curl -H "Authorization: Bearer YOUR_TOKEN" URLをcurl2codeに渡すと、認証ヘッダーHeader.add headers 'Authorization' 'Bearer YOUR_TOKEN'を含むCohttpのコードが生成されます。curl2codeは-H "Authorization: Bearer ..."と--oauth2-bearerフラグの両方からBearerトークンを検出します。Basic authの場合は、-u user:passを使用してください。
OCamlでContent-Typeヘッダーを設定する方法は?
curl2codeはcurl -H "Content-Type: application/json" URLを、適切なヘッダーHeader.add headers 'Content-Type' 'application/json'を含むCohttpのコードに変換します。-dデータの場合、curlはデフォルトでapplication/x-www-form-urlencodedを使用し、-Fフォームアップロードの場合はmultipart/form-dataを使用します。curl2codeはそれぞれを正しいCohttp APIにマッピングします。