A documentação de API fala curl e os apps iOS falam URLSession, e traduzir entre os dois à mão é trabalho repetitivo que convida a pequenos erros: um cabeçalho esquecido, um corpo deixado como string quando deveria ser JSON, uma opção de autenticação ignorada em silêncio. Este conversor analisa o comando curl como o próprio curl faz, incluindo as opções que mudam o método ou dobram credenciais em um cabeçalho, e gera Swift que usa só o Foundation. Um corpo JSON vira um dicionário Swift passado pelo JSONSerialization em vez de uma string opaca, então continua legível e fácil de editar.
Recursos
Analisa -X, -H, -d, --data-raw, --json, -u, -b, -A, -e e -G como o curl faz
Gera código URLSession que não precisa de nada além do Foundation
Corpos JSON representados como dicionário Swift e codificados com JSONSerialization
Autenticação básica reconstruída a partir das credenciais, com base64EncodedString
Método deduzido da presença de um corpo, ou tirado de -X
Avisa sobre opções do curl sem equivalente razoável em Swift
Copie o código ou baixe como arquivo .swift
Como usar cURL para Swift
Cole o comando curl, com as opções e o corpo
Leia o Swift gerado à direita
Confira os avisos por causa de opções que não puderam ser traduzidas
O método é deduzido do corpo, exatamente como o curl deduziria.
Erros comuns e solução de problemas
A requisição funciona no curl mas falha no app. — Confira o App Transport Security. O iOS bloqueia HTTP em claro por padrão, então um endpoint http:// que o curl alcança sem problema precisa de exceção no Info.plist ou de uma URL https.
O código compila mas não imprime nada. — URLSession é assíncrono. Em uma ferramenta de linha de comando o processo termina antes de o bloco de conclusão rodar: mantenha o run loop vivo ou passe para a forma async/await de data(for:).
Uma opção -k ou --insecure foi ignorada. — De propósito. Pular a validação do certificado exige um URLSessionDelegate e é uma decisão que convém tomar explicitamente.
Caracteres especiais no corpo saem errados. — Confira as aspas do comando original. Um corpo entre aspas duplas já passou pelo seu shell, então o que ele expandiu ficou gravado no que o curl recebeu.
Perguntas frequentes
O Swift gerado funciona em iOS, macOS e Linux?
Sim. Ele usa URLSession do Foundation, disponível nas plataformas da Apple e no swift-corelibs-foundation no Linux, então o mesmo arquivo compila também em um projeto de servidor.
Posso obter código com async/await em vez de bloco?
A forma gerada usa uma data task com bloco de conclusão, que funciona em toda parte. Trocar por `let (data, response) = try await URLSession.shared.data(for: request)` é uma linha só.
Como um corpo JSON é tratado?
Ele é analisado e representado como dicionário [String: Any] do Swift, depois codificado com JSONSerialization. Assim a carga continua legível e você edita valores sem mexer em uma string escapada.
O que acontece com cookies de uma opção -b?
Viram um cabeçalho Cookie na requisição. Vale lembrar que o URLSession tem o próprio armazenamento de cookies, que pode acrescentar ou sobrescrever se a sessão não for configurada.
Meu comando curl é enviado ao convertê-lo para Swift?
Não. O comando é analisado e o código gerado no seu navegador, o que importa porque comandos curl de documentação e de logs muitas vezes contêm chaves de API reais.
Ferramentas relacionadas
cURL para Fetch — Converta um comando curl em uma chamada fetch() de JavaScript.
curl para Python — Converta um comando curl em um script Python com a biblioteca requests.
curl para Node.js — Converta um comando curl em uma requisição Node.js com axios.
cURL para Java — Converte um comando curl em código Java com HttpClient.
cURL para Dart — Converte um comando curl em código Dart com package:http.
Cliente de API — Envie requisições HTTP, monte cabeçalhos e parâmetros e inspecione respostas; salva as últimas 25.
Mais ferramentas de Ferramentas de API
cURL para Dart — Converte um comando curl em código Dart com package:http.
cURL para Fetch — Converta um comando curl em uma chamada fetch() de JavaScript.
Analisador de URL — Decomponha uma URL em suas partes e liste os parâmetros de consulta.
Cliente de API — Envie requisições HTTP, monte cabeçalhos e parâmetros e inspecione respostas; salva as últimas 25.
Gerador de URL e UTM — Construa e valide URLs de produção codificadas com parâmetros UTM.
Testador de API da OpenAI — Crie, execute e copie requisições à API Chat Completions da OpenAI como cURL, Python e JavaScript.