curl to Go 変換ツール
curlコマンドをGoのnet/httpコードへ、ブラウザー内で即座に変換します。コマンドはお使いのデバイスに留まります。
あなたのcurlコマンドはブラウザー内でローカルにGoへ変換され、アップロードされることはありません。ただし、本番環境の実際のトークンや認証情報をどのツールにも貼り付けないようにしてください。
JavaScript版も必要ですか?cURL to Fetchをお試しください。
curl to Go 変換ツール について
このcurl to go変換ツールは、curlコマンドを標準のnet/httpパッケージを使った慣用的なGoに書き換えるため、API呼び出しを手作業で組み立てずにGoのサービスへそのまま入れられます。curl to golangツールとして、-X、-H、-d、--data-raw、--json、-u、-b、-G といったフラグを読み取り、適切なメソッドで http.NewRequest を構築し、各ヘッダーを req.Header.Set で設定し、ボディを strings.NewReader で包みます。生成された main() は io.ReadAll でレスポンスを読み、ステータスを表示し、go run でコンパイルできる状態です。curlのテストをバックエンドのハンドラー・CLI・ワーカーへ移植するときに使ってください。変換はブラウザー内で行われるため、コマンドとその中のトークンはお使いのデバイス上でローカルに処理され、外に出ることはありません。
機能
- curlフラグから推測したメソッドで http.NewRequest 呼び出しを構築
- 各 -H/--header の値を req.Header.Set で設定
- リクエストボディを strings.NewReader で包み、必要なときだけ strings のインポートを追加
- io.ReadAll でレスポンスを読み、res.Status とボディを表示
- -u/--user をBasic認証ヘッダーにマッピングし、cookie・user-agent・refererを処理
- -G/--get のデータをクエリ文字列としてURLに付加し、nilボディを送信
- NewRequest と Do の後に基本的なエラーチェックを入れ、スニペットがコンパイルできる状態に
- 結果をコピー、またはワンクリックで request.go としてダウンロード
curl to Go 変換ツール の使い方
- curlコマンドをcURLコマンドボックスに貼り付けます。
- 出力パネルで生成されたGoのnet/httpプログラムを読みます。
- 調整またはスキップされたフラグがないか警告バナーを確認します。
- 「コピー」をクリックするか、ファイルを request.go としてダウンロードし go run で実行します。
例
入力
curl https://api.example.com/ping
出力
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.example.com/ping"
req, err := http.NewRequest("GET", url, nil)
if err != nil {
panic(err)
}
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
data, _ := io.ReadAll(res.Body)
fmt.Println(res.Status)
fmt.Println(string(data))
}
ボディのないGETは http.NewRequest に nil を渡し、strings のインポートを省きます。
よくあるエラーとトラブルシューティング
- コンパイラが imported and not used "strings" エラーを報告する。 — そのインポートはリクエストボディがあるときだけ出力されます。ボディを手動で削除した場合は、strings のインポートも外してください。
- http.DefaultClient ではなく、タイムアウト付きの再利用可能なクライアントが欲しい。 — http.DefaultClient を独自の &http.Client{Timeout: ...} に差し替えてください。スニペットは簡潔さのためデフォルトクライアントを使っています。
- ボディが生のテキストとして送られるが、エンドポイントはJSONを必要とする。 — Content-Typeヘッダーはcurlから引き継がれます。元のコマンドがJSONのContent-Typeを設定するか --json を使うようにして、ヘッダーが存在することを確認してください。
よくある質問
- curlコマンドをGoに変換するには?
- curlコマンドを入力ボックスに貼り付けると、変換ツールが右側に完全なGoのnet/httpプログラムを表示します。コピーまたは request.go としてダウンロードできます。
- 生成されたGoのコードは標準ライブラリを使いますか?
- はい。標準ライブラリの net/http・io・fmt・strings のみを使うため、実行前に go get するものは何もありません。
- リクエストボディはGoでどう表現されますか?
- ボディは strings.NewReader で包まれて http.NewRequest に渡され、strings のインポートはボディがあるときだけ自動的に追加されます。
- 出力を go run でそのまま実行できますか?
- はい。変換ツールは main() 関数・基本的なエラー処理・レスポンス表示を備えた完全な package main を出力するため、go run request.go がそのまま動きます。
- Goに変換するとき、私のcurlコマンドはサーバーに送信されますか?
- いいえ。curl to goの変換は完全にブラウザー内で実行されるため、コマンドやその中の秘密情報はお使いのデバイスに留まります。
関連ツール
すべての ArrayKit ツール