cURL a Dart
Pega un comando curl y obtén código Dart que hace la misma petición con package:http.
cURL a Dart analiza tu comando en el navegador. Las credenciales del comando no salen de tu dispositivo.
Convertir a Swift
Acerca de cURL a Dart
La documentación del backend te da un comando curl; una app de Flutter necesita Dart. Este conversor tiende el puente, analizando las opciones de curl como lo hace el propio curl y generando código que usa package:http, el paquete del que ya depende casi todo proyecto Dart o Flutter. Las cabeceras se recogen en un mapa tipado, un cuerpo JSON se convierte en un mapa de Dart codificado con jsonEncode en vez de una cadena pegada, y la autenticación básica se reconstruye con base64Encode a partir de las credenciales decodificadas. Los verbos que no tienen atajo caen en un http.Request, así que un método inusual sigue produciendo código funcional.
Características
- Analiza -X, -H, -d, --data-raw, --json, -u, -b, -A, -e y -G como lo hace curl
- Genera código con package:http, el cliente HTTP estándar de Dart
- Cabeceras recogidas en un Map<String, String> tipado
- Cuerpos JSON representados como mapa de Dart y codificados con jsonEncode
- Autenticación básica reconstruida con base64Encode y no con un Base64 pegado
- Recurre a http.Request para verbos sin método abreviado
- Avisa de las opciones de curl sin equivalente razonable en Dart
Cómo usar cURL a Dart
- Pega el comando curl de la documentación de tu API
- Lee el Dart generado a la derecha
- Revisa los avisos sobre opciones que no se han podido trasladar
- Copia el código o descárgalo como archivo .dart
Ejemplo
Entrada
curl -X PUT https://api.example.com/users/1 -H 'Authorization: Bearer TOKEN' -d '{"role":"admin"}'
Salida
final response = await http.put(url, headers: headers, body: body);
El verbo viene de -X, y el cuerpo JSON se construye como mapa de Dart antes de codificarlo.
Errores comunes y solución de problemas
- No se encuentra el paquete al ejecutar el archivo. — Añádelo a pubspec.yaml en dependencies como http y ejecuta dart pub get. No forma parte del SDK, aunque lo mantiene el equipo de Dart.
- La petición falla solo en Flutter web. — Eso es CORS, no el código. El navegador aplica la política de mismo origen que un comando curl nunca ve, así que la API debe enviar las cabeceras Access-Control correctas.
- Una cadena del cuerpo se interpola de forma extraña. — El signo de dólar inicia una interpolación en Dart. En los literales generados va escapado, pero si pegas un valor a mano escapa cualquier $ como \$.
- La petición funciona en Android pero no contra un servidor local en el emulador. — Un emulador de Android no ve el localhost de la máquina anfitriona: usa 10.0.2.2. Además, el HTTP en claro debe permitirse en la configuración de seguridad de red.
Preguntas frecuentes
- ¿El código generado funciona en una app de Flutter?
- Sí. package:http funciona igual en Flutter y en Dart puro, así que el código de la petición puede pegarse tal cual en una clase de servicio. Solo conviene sustituir la impresión final por lo que haga tu app con la respuesta.
- ¿Conviene usar package:http o Dio?
- package:http es la opción oficial y más ligera, y cubre casi cualquier petición. Dio añade interceptores, cancelación y utilidades multipart, y su API es lo bastante parecida como para traducir esta salida sin problema.
- ¿Cómo se convierte un cuerpo JSON?
- Se analiza y se escribe como literal de mapa de Dart, y después se codifica con jsonEncode. Así los objetos y arrays anidados siguen siendo legibles y puedes sustituir valores por variables directamente.
- ¿Y si el método no tiene un ayudante tipo http.get?
- El código generado construye un http.Request con el verbo como cadena y lo envía con send(), lo que cubre PURGE, LINK o cualquier otro que use una API.
- ¿Se sube el comando curl para convertirlo?
- No. El análisis y la generación de código ocurren en tu navegador, así que los tokens y las claves de API dentro del comando se quedan en tu dispositivo.
Herramientas relacionadas
- cURL a Swift — Convierte un comando curl en código Swift con URLSession.
- cURL a Fetch — Convierte un comando curl en una llamada fetch() de JavaScript.
- curl a Python — Convierte un comando curl en un script de Python con requests.
- curl a Go — Convierte un comando curl en código de Go con net/http.
- curl a Node.js — Convierte un comando curl en código de Node.js con axios.
- Cliente de API — Envía peticiones HTTP, crea cabeceras y parámetros e inspecciona respuestas; guarda tus últimas 25.
Todas las herramientas de ArrayKit