curl を Rust に変換

curl2code は、reqwest クレートを使用して curl コマンドを Rust コードに変換します。変換は完全なプライバシー保護のため、WebAssembly を介してブラウザ内で実行されます。Go については、curl to Go 変換ツールをご確認ください。C 言語については、curl to C をご覧ください。以下に、async/await を使用した実用的な Rust の例を示します。

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

  1. 1

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

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

  2. 2

    ネットワークタブに移動

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

  3. 3

    cURL としてコピー

    リクエストを右クリック → コピーcURL としてコピー を選択します。その後、上に貼り付けてください。

よくある質問

Rust reqwestとは何ですか?

reqwestは、hyperの上に構築されたRustで最も人気のあるHTTPクライアントです。ブロッキングと非同期の両方のAPI、serdeによる自動JSONシリアライズ、TLS、クッキー処理、およびプロキシサポートを提供します。cargo add reqwest --features jsonで追加できます。curl2codeがRust変換に使用するデフォルトのライブラリです。

reqwest、hyper、ureqのどれを使うべきですか?

reqwestは、高レベルで機能が豊富、かつ非同期であるため、ほとんどのプロジェクトで第一選択となります。hyperはより低レベルで、最大限の制御を提供します(reqwestはこれに基づいています)。ureqは、非同期ランタイムへの依存がない、最小限のブロッキング専用クライアントです。同様の標準ライブラリアプローチについては、curl to Goまたはcurl to Cをご覧ください。

Rustで認証を処理するにはどうすればよいですか?

Bearerの場合:client.get(url).bearer_auth(token)。Basicの場合:client.get(url).basic_auth(user, Some(pass))。または、.header("Authorization", value)で手動でヘッダーを設定します。curl2codeは、-uおよび-H 'Authorization: ...'フラグを適切なreqwestのメソッドに変換します。

Rustでマルチパートフォームデータを送信するにはどうすればよいですか?

reqwest::multipart::Formを使用します。Form::new()で作成し、.text("key", "value")でテキストフィールドを、.file("field", path).await?でファイルを追加します。これをclient.post(url).multipart(form)に渡します。curl2codeはreqwestのマルチパート用に-Fフラグを処理します。

RustでHTTPエラーを処理するにはどうすればよいですか?

reqwestは成功時にResponseを、失敗時にreqwest::ErrorをラップしたResultを返します。伝播には?演算子を使用してください。response.status().is_success()を確認するか、非2xxコードをエラーに変換するresponse.error_for_status()?を呼び出します。Rustの型システムにより、すべてのエラーパスがコンパイル時に明示的に処理されることが保証されます。

reqwestにはどの非同期ランタイムが必要ですか?

reqwestはデフォルトでtokioランタイムを必要とします。main関数に#[tokio::main]を付与してください。非同期ランタイムなしでブロッキングで使用する場合は、blocking機能を有効にしてreqwest::blocking::Clientを使用します。curl2codeはデフォルトでtokioを使用した非同期コードを生成します。別の非同期エコシステムについては、curl to Go (goroutines) をご覧ください。

Rust reqwestでタイムアウトを設定するにはどうすればよいですか?

クライアントに設定する場合:Client::builder().timeout(Duration::from_secs(30)).connect_timeout(Duration::from_secs(10)).build()?。リクエストごとに設定する場合:client.get(url).timeout(Duration::from_secs(5))。これらはcurlの--max-timeおよび--connect-timeoutフラグにマッピングされます。

reqwestでプロキシを使用するにはどうすればよいですか?

クライアントビルダーでプロキシを設定します:Client::builder().proxy(Proxy::https("http://proxy:8080")?).build()?。HTTP、HTTPS、およびSOCKS5プロキシをサポートしています。また、reqwestはデフォルトでHTTP_PROXYおよびHTTPS_PROXY環境変数も尊重します。curl2codeは-xフラグをプロキシ設定に変換します。

RustでJSONボディを含むPOSTリクエストを送信する方法は?

curl2codeを使用して、curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URLのようなcurlのPOSTコマンドをRustに変換します。生成されたコードではclient.post(url).json(&data).send().await?を使用します。curl2codeはJSONコンテンツを含む-d/--dataフラグを自動的に検出し、reqwestのコードに適切なContent-Typeヘッダーを設定します。

RustでBearerトークン認証を追加する方法は?

curl -H "Authorization: Bearer YOUR_TOKEN" URLをcurl2codeに渡すと、認証ヘッダー.bearer_auth("YOUR_TOKEN")を含むreqwestのコードが生成されます。curl2codeは-H "Authorization: Bearer ..."--oauth2-bearerフラグの両方からBearerトークンを検出します。Basic authの場合は、-u user:passを使用してください。

RustでContent-Typeヘッダーを設定する方法は?

curl2codeはcurl -H "Content-Type: application/json" URLを、適切なヘッダー.header("Content-Type", "application/json")を含むreqwestのコードに変換します。-dデータの場合、curlはデフォルトでapplication/x-www-form-urlencodedを使用し、-Fフォームアップロードの場合はmultipart/form-dataを使用します。curl2codeはそれぞれを正しいreqwest APIにマッピングします。

便利なリンク

curl ガイド

curl を他の言語に変換