Skip to main content
Volver a herramientas

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.

Herramientas relacionadas