cURL to Go
Convierte un comando curl a Go net/http
Acerca de cURL to Go
Produce un programa Go completo, con package main incluido, que envía la petición con net/http de la biblioteca estándar, así que no hay nada que instalar con go get. Los cuerpos -d pasan tal cual por strings.NewReader, cada -H se convierte en req.Header.Set y los campos -F se reúnen en url.Values. El análisis ocurre del lado del cliente, así que tu comando nunca sale de tu equipo.
Categoría: API.
Preguntas frecuentes
¿El código Go necesita módulos de terceros?
▾
No. Es un programa completo con package main que solo importa la biblioteca estándar: net/http, io y fmt, más strings y net/url cuando hay cuerpo o formulario. Guárdalo como main.go y ejecuta go run main.go; io.ReadAll requiere Go 1.16 o posterior.
¿El código Go convierte -F a multipart/form-data?
▾
No. Los campos -F se reúnen en url.Values y se envían como formData.Encode(), un cuerpo codificado como URL, sin agregar ningún encabezado Content-Type. Define Content-Type: application/x-www-form-urlencoded con req.Header.Set, o reconstruye el cuerpo con mime/multipart si la API espera multipart o un archivo.
¿Cómo se escriben en Go los encabezados, -u y el cuerpo de la petición?
▾
Cada -H se convierte en una llamada a req.Header.Set, y -u usuario:clave en un encabezado Authorization: Basic con el valor Base64 ya calculado, en lugar de req.SetBasicAuth. Los cuerpos -d, incluido el JSON, se pasan tal cual a strings.NewReader en un literal de cadena sin procesar (raw string), sin usar encoding/json.
¿Qué hace el programa Go con -k, -L y --max-time?
▾
Ninguna se traduce; la petición pasa por un &http.Client{} sin configurar. Ese cliente ya sigue hasta 10 redirecciones, mientras que -k requiere un http.Transport personalizado con TLSClientConfig y el tiempo de espera se puede definir con el campo Client.Timeout.