curl を Go に変換

標準の net/http パッケージを使用して、curl コマンドを Go コードに変換します。curl2code は WebAssembly を介してブラウザ内で完全に動作するため、データは非公開に保たれます。より高レベルな言語をお好みの場合は、curl to Python 変換ツールをお試しください。システムプログラミングについては、curl to Rust をご覧ください。以下に、すぐに使える Go の例を掲載しています。

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

  1. 1

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

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

  2. 2

    ネットワークタブに移動

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

  3. 3

    cURL としてコピー

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

よくある質問

Go net/httpとは何ですか?

Goのnet/httpは、標準ライブラリに含まれているプロダクショングレードのHTTPクライアントおよびサーバーです。外部依存関係を必要とせず、デフォルトでHTTP/2をサポートし、コネクションプーリング、タイムアウト、TLS設定を標準で提供します。curl2codeがGoで使用する唯一のライブラリであり、サードパーティのパッケージは不要です。

net/httpとサードパーティのGo HTTPクライアント、どちらを使うべきですか?

Goのnet/httpは、ほとんどのユースケースに十分なほど強力です。多くの言語とは異なり、標準ライブラリがそのまま本番環境で使用可能です。restyのようなサードパーティのオプションは利便性(自動リトライ、チェイニング)を追加しますが、依存関係も増えます。同様の「全部入り」アプローチについては、curl to Rust コンバーター (reqwest) または curl to Pythonをご覧ください。

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

Authorizationreq.Header.Set("Authorization", "Bearer "+token)ヘッダーを設定します。Basic認証の場合は、ヘッダーを自動的に設定するreq.SetBasicAuth(user, pass)を使用します。curl2codeは-uおよび-H 'Authorization: ...'を検出し、正しいGoコードを生成します。

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

mime/multipartパッケージを使用します。multipart.NewWriter(body)でライターを作成し、CreateFormFieldでフィールドを、CreateFormFileでファイルを追加します。Content-Typewriter.FormDataContentType()に設定します。curl2codeはすべての-Fフラグの変換を処理します。

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

Goは明示的なエラー返却を使用します。if err != nilの後は必ずhttp.Do(req)を確認してください。その後、HTTPレベルのエラーについてresp.StatusCodeを確認します。リソースリークを防ぐために、必ずdefer resp.Body.Close()を行ってください。この明示的なエラー処理はGoのコアパターンであり、例外やtry/catchはありません。

Goで並行HTTPリクエストを行うにはどうすればよいですか?

ゴルーチン(goroutine)をsync.WaitGroupやチャネルと共に使用します。go func() { ... }()を使用して、各リクエストをゴルーチンで起動します。並行数を制限するには、セマフォチャネルを使用します。Goのゴルーチンは軽量なため、数千の並行リクエストを簡単に処理できます。同様の並行パターンについては、curl to Rustをご覧ください。

GoのHTTPクライアントでタイムアウトを設定するにはどうすればよいですか?

リクエスト全体の期限にはclient.Timeoutを設定します。より細かな制御には、context.WithTimeoutまたはcontext.WithDeadlineを使用し、そのコンテキストをhttp.NewRequestWithContextに渡します。curlの--connect-timeoutTransport.DialContextのタイムアウトに、--max-timeclient.Timeoutにマッピングされます。

Goでプロキシを設定するにはどうすればよいですか?

カスタムのTransport.Proxyhttp.ProxyURL(proxyUrl)http.Transportに設定します。また、GoはデフォルトでHTTP_PROXYを介してHTTPS_PROXYおよびhttp.ProxyFromEnvironment環境変数を尊重します。curl2codeは-xおよび--proxyフラグを適切なGoのプロキシ設定に変換します。

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

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

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

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

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

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

便利なリンク

curl ガイド

curl を他の言語に変換