cURL para Swift

Cole um comando curl e receba código Swift que faz a mesma requisição com URLSession.

O cURL para Swift analisa seu comando no navegador. Tokens e credenciais do comando não saem do seu dispositivo.

Criado e mantido por Udit Agarwal

Testar o cliente de API

Sobre cURL para Swift

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

  1. Cole o comando curl, com as opções e o corpo
  2. Leia o Swift gerado à direita
  3. Confira os avisos por causa de opções que não puderam ser traduzidas
  4. Copie o código ou baixe como arquivo .swift

Exemplo

Entrada

curl https://api.example.com/users -H 'Content-Type: application/json' -d '{"name":"Ada"}'

Saída

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

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.
  • Testador de API da Anthropic Claude — Crie, execute e copie requisições à API Messages da Anthropic Claude como cURL, Python e JavaScript.
  • Testador de API do Google Gemini — Crie, execute e copie requisições generateContent do Google Gemini como cURL, Python e JavaScript.
  • Testador de API do Replicate — Crie, execute e copie requisições de previsão da API do Replicate como cURL, Python e JavaScript.
  • Testador de API do Hugging Face — Crie, execute e copie requisições à API de Inferência do Hugging Face como cURL, Python e JavaScript.
  • curl para Python — Converta um comando curl em um script Python com a biblioteca requests.
  • curl para Go — Converta um comando curl em código Go usando o pacote net/http.

Ver todas as ferramentas de Ferramentas de API (24) · Todas as ferramentas