Passar de um teste pontual a um script reutilizável
Um comando curl ajuda a confirmar como uma API espera receber dados. Ao passar esse pedido para o projeto, é útil manter os valores e rever as opções numa biblioteca conhecida. O conversor prepara código para Requests, Fetch ou PHP cURL sem executar o pedido.
Escolher a saída de acordo com o projeto
Python usa Requests, que pode instalar com pip install requests. O corpo é enviado em bytes UTF-8. PHP precisa da extensão cURL ativa. A opção JavaScript produz uma chamada Fetch para o navegador ou uma versão compatível do Node.js.
Os ambientes não têm todos os mesmos valores por omissão. Defina os limites de tempo e o tratamento de erros necessários. Requests pode ler definições de proxy e .netrc do ambiente; em PHP, a versão instalada de libcurl também pode influenciar o transporte.
Converter um comando curl passo a passo
Cole um único comando com uma URL HTTP ou HTTPS completa. Escolha a linguagem, confirme o método, os cabeçalhos e o corpo e consulte as notas. Pode copiar o resultado ou descarregar um ficheiro. Todo o processamento da conversão ocorre no navegador.
Mantenha as aspas POSIX; nos instrumentos de desenvolvimento, prefira a exportação cURL para bash. Substitua variáveis e substituições de comandos por valores concretos. Ficheiros locais, formulários multipart e opções não suportadas exigem configuração manual.
O que muda ao usar Fetch no navegador
As regras CORS continuam a aplicar-se. Os cabeçalhos controlados pelo navegador são omitidos e identificados nas notas. Com credentials: omit, o código não envia automaticamente os cookies da sessão do navegador. Para controlar estes campos no servidor, avalie Python ou PHP.
Sem -L, o Fetch usa redirecionamentos manuais, que podem devolver uma resposta opaca no navegador. Com redirecionamentos ativos, a alteração do método e o reencaminhamento de credenciais dependem da biblioteca. Teste o resultado no ambiente em que será executado.
Manter campos repetidos num formulário
Os dois valores de tag são mantidos. --data-urlencode codifica o espaço e o Python recebe o corpo já preparado, sem o converter num dicionário que perderia uma das entradas.
curl 'https://example.com/api/tags' --data-urlencode 'tag=cloud hosting' --data-urlencode 'tag=linux'import requests
url = "https://example.com/api/tags"
headers = {
"Content-Type": "application/x-www-form-urlencoded"
}
body = "tag=cloud%20hosting&tag=linux".encode("utf-8")
response = requests.request(
method="POST",
url=url,
headers=headers,
data=body,
allow_redirects=False,
verify=True,
)
print(response.status_code)
print(response.text)
Como são tratadas as opções curl
| Opção | Resultado |
|---|---|
URL / --url | Uma URL HTTP ou HTTPS completa |
-X / --request | Método HTTP indicado explicitamente |
-H / --header | Nome e valor; duplicados e valores vazios exigem revisão |
-d / --data / --data-raw / --data-binary | Corpo incluído no comando; mantém a ordem dos argumentos |
--data-urlencode / -G | Codifica valores; -G coloca os dados na consulta da URL |
--json | Mantém o texto JSON e acrescenta cabeçalhos JSON por omissão |
-u / --user | Basic Auth com username:password |
-L / -I / -k | Redirecionamentos, HEAD e validação TLS; Fetch não suporta -k |
-b / -A / -e | Cookie, User-Agent e Referer sujeitos às regras do navegador |
--compressed / -s / -S / -v / -i | Descompressão pela biblioteca; sem reproduzir o aspeto da saída no terminal |
Perguntas sobre o conversor
O pedido é enviado durante a conversão?
Não. O conversor analisa texto e gera código no navegador. Só a execução posterior do código envia o pedido à API.
Posso usar um comando copiado do navegador?
Sim, desde que represente um pedido único em sintaxe POSIX com opções suportadas. Use a variante bash e analise qualquer opção assinalada antes de a remover.
O conversor altera o JSON?
Mantém o corpo como texto, sem voltar a serializar números, espaços ou chaves repetidas. A opção --json não faz validação da sintaxe JSON.
Porque não aparecem todos os cabeçalhos no Fetch?
O navegador reserva alguns cabeçalhos para si. Os que forem omitidos aparecem nas notas. Content-Length é recalculado pela biblioteca HTTP.
O ficheiro pode conter credenciais?
Sim. Tokens, palavras-passe e cookies fornecidos no comando ficam no código. Reveja o ficheiro antes de o partilhar e adapte a gestão de segredos ao projeto.
