cURL para Dart
Cole um comando curl e receba código Dart que faz a mesma requisição com package:http.
O cURL para Dart analisa seu comando no navegador. As credenciais do comando não saem do seu dispositivo.
Converter para Swift
Sobre cURL para Dart
A documentação do backend te dá um comando curl; um app Flutter precisa de Dart. Este conversor faz a ponte, analisando as opções do curl como o próprio curl faz e gerando código que usa package:http, o pacote do qual quase todo projeto Dart ou Flutter já depende. Os cabeçalhos são reunidos em um mapa tipado, um corpo JSON vira um mapa Dart codificado com jsonEncode em vez de uma string colada, e a autenticação básica é reconstruída com base64Encode a partir das credenciais decodificadas. Verbos sem atalho recaem em um http.Request, então um método incomum ainda gera código funcional.
Recursos
- Analisa -X, -H, -d, --data-raw, --json, -u, -b, -A, -e e -G como o curl faz
- Gera código com package:http, o cliente HTTP padrão do Dart
- Cabeçalhos reunidos em um Map<String, String> tipado
- Corpos JSON representados como mapa Dart e codificados com jsonEncode
- Autenticação básica reconstruída com base64Encode e não com Base64 colado
- Recorre a http.Request para verbos sem método abreviado
- Avisa sobre opções do curl sem equivalente razoável em Dart
Como usar cURL para Dart
- Cole o comando curl da documentação da sua API
- Leia o Dart gerado à direita
- Confira os avisos sobre opções que não puderam ser levadas
- Copie o código ou baixe como arquivo .dart
Exemplo
Entrada
curl -X PUT https://api.example.com/users/1 -H 'Authorization: Bearer TOKEN' -d '{"role":"admin"}'
Saída
final response = await http.put(url, headers: headers, body: body);
O verbo vem de -X, e o corpo JSON é montado como mapa Dart antes de ser codificado.
Erros comuns e solução de problemas
- O pacote não é encontrado ao rodar o arquivo. — Adicione-o ao pubspec.yaml em dependencies como http e rode dart pub get. Ele não faz parte do SDK, embora seja mantido pela equipe do Dart.
- A requisição falha só no Flutter web. — Isso é CORS, não o código. O navegador aplica a política de mesma origem que um comando curl nunca vê, então a API precisa enviar os cabeçalhos Access-Control corretos.
- Uma string do corpo é interpolada de forma estranha. — O cifrão inicia interpolação em Dart. Nos literais gerados ele vai escapado, mas se você colar um valor à mão, escape qualquer $ como \$.
- A requisição funciona no Android mas não contra um servidor local no emulador. — Um emulador Android não enxerga o localhost da máquina host: use 10.0.2.2. Além disso, o HTTP em claro precisa ser permitido na configuração de segurança de rede.
Perguntas frequentes
- O código gerado funciona em um app Flutter?
- Sim. O package:http funciona igual no Flutter e no Dart puro, então o código da requisição pode ser colado como está em uma classe de serviço. Só vale trocar a impressão final pelo que o seu app faz com a resposta.
- Devo usar package:http ou Dio?
- O package:http é a opção oficial e mais leve, e cobre quase toda requisição. O Dio acrescenta interceptadores, cancelamento e utilidades multipart, e a API é parecida o bastante para traduzir esta saída sem dor.
- Como um corpo JSON é convertido?
- Ele é analisado e escrito como literal de mapa Dart, depois codificado com jsonEncode. Assim objetos e arrays aninhados continuam legíveis e você substitui valores por variáveis direto.
- E se o método não tiver um auxiliar tipo http.get?
- O código gerado monta um http.Request com o verbo como string e envia com send(), o que cobre PURGE, LINK ou qualquer outro que uma API use.
- O comando curl é enviado para ser convertido?
- Não. A análise e a geração de código acontecem no seu navegador, então tokens e chaves de API dentro do comando ficam no seu dispositivo.
Ferramentas relacionadas
- cURL para Swift — Converte um comando curl em código Swift com URLSession.
- 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 Go — Converta um comando curl em código Go usando o pacote net/http.
- curl para Node.js — Converta um comando curl em uma requisição Node.js com axios.
- Cliente de API — Envie requisições HTTP, monte cabeçalhos e parâmetros e inspecione respostas; salva as últimas 25.
Todas as ferramentas de ArrayKit