La documentación de las API habla curl y las apps de iOS hablan URLSession, y traducir entre ambos a mano es trabajo repetitivo que invita a pequeños errores: una cabecera olvidada, un cuerpo dejado como cadena cuando debía ser JSON, una opción de autenticación ignorada en silencio. Este conversor analiza el comando curl como lo hace el propio curl, incluidas las opciones que cambian el método o pliegan credenciales en una cabecera, y genera Swift que solo usa Foundation. Un cuerpo JSON se convierte en un diccionario de Swift pasado por JSONSerialization en vez de una cadena opaca, así que sigue siendo legible y fácil de editar.
Características
Analiza -X, -H, -d, --data-raw, --json, -u, -b, -A, -e y -G como lo hace curl
Genera código URLSession que no necesita nada más allá de Foundation
Cuerpos JSON representados como diccionario de Swift y codificados con JSONSerialization
Autenticación básica reconstruida a partir de las credenciales, con base64EncodedString
Método deducido de la presencia de un cuerpo, o tomado de -X
Avisa de las opciones de curl sin equivalente razonable en Swift
Copia el código o descárgalo como archivo .swift
Cómo usar cURL a Swift
Pega el comando curl, con sus opciones y su cuerpo
Lee el Swift generado a la derecha
Revisa los avisos por si alguna opción no se ha podido traducir
El método se deduce del cuerpo, exactamente como lo deduciría curl.
Errores comunes y solución de problemas
La petición funciona en curl pero falla en la app. — Comprueba App Transport Security. iOS bloquea HTTP en claro por defecto, así que un extremo http:// que curl alcanza sin problema necesita una excepción en el Info.plist o una URL https.
El código compila pero no imprime nada. — URLSession es asíncrono. En una herramienta de línea de comandos el proceso termina antes de que se ejecute el bloque de finalización: mantén vivo el run loop o pasa a la forma async/await de data(for:).
Se ha ignorado una opción -k o --insecure. — De forma deliberada. Saltarse la validación del certificado requiere un URLSessionDelegate y es una decisión que conviene tomar de forma explícita.
Los caracteres especiales del cuerpo salen mal. — Revisa el entrecomillado del comando original. Un cuerpo entre comillas dobles ya ha pasado por tu shell, así que lo que este expandiera queda fijado en lo que recibió curl.
Preguntas frecuentes
¿El Swift generado funciona en iOS, macOS y Linux?
Sí. Usa URLSession de Foundation, disponible en las plataformas de Apple y en swift-corelibs-foundation en Linux, así que el mismo archivo compila también en un proyecto de servidor.
¿Puedo obtener código con async/await en vez de un bloque?
La forma generada usa una tarea de datos con bloque de finalización, que funciona en todas partes. Cambiarla por `let (data, response) = try await URLSession.shared.data(for: request)` es una sola línea.
¿Cómo se maneja un cuerpo JSON?
Se analiza y se representa como diccionario [String: Any] de Swift, y después se codifica con JSONSerialization. Así la carga útil sigue siendo legible y puedes editar valores sin tocar una cadena escapada.
¿Qué pasa con las cookies de una opción -b?
Se convierten en una cabecera Cookie de la petición. Ten en cuenta que URLSession tiene su propio almacenamiento de cookies, que puede añadir o sobrescribir salvo que configures la sesión de otro modo.
¿Se sube mi comando curl al convertirlo a Swift?
No. El comando se analiza y el código se genera en tu navegador, algo que importa porque los comandos curl de la documentación y de los registros contienen a menudo claves de API reales.
Herramientas relacionadas
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 Node.js — Convierte un comando curl en código de Node.js con axios.
cURL a Java — Convierte un comando curl en código Java con HttpClient.
cURL a Dart — Convierte un comando curl en código Dart con package:http.
Cliente de API — Envía peticiones HTTP, crea cabeceras y parámetros e inspecciona respuestas; guarda tus últimas 25.
Más herramientas de Herramientas de API
cURL a Dart — Convierte un comando curl en código Dart con package:http.
cURL a Fetch — Convierte un comando curl en una llamada fetch() de JavaScript.
Analizador de URL — Descompone una URL en sus partes y lista los parámetros de consulta.
Cliente de API — Envía peticiones HTTP, crea cabeceras y parámetros e inspecciona respuestas; guarda tus últimas 25.
Generador de URL y UTM — Construye y valida URL de producción codificadas con parámetros UTM.
Probador de API de OpenAI — Crea, ejecuta y copia solicitudes a la API de Chat Completions de OpenAI como cURL, Python y JavaScript.
Probador de API de Anthropic Claude — Crea, ejecuta y copia solicitudes a la API de Mensajes de Anthropic Claude como cURL, Python y JavaScript.
Probador de API de Google Gemini — Crea, ejecuta y copia solicitudes generateContent de Google Gemini como cURL, Python y JavaScript.
Probador de API de Replicate — Crea, ejecuta y copia solicitudes de predicción de la API de Replicate como cURL, Python y JavaScript.
Probador de API de Hugging Face — Crea, ejecuta y copia solicitudes a la API de Inferencia de Hugging Face como cURL, Python y 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.