Do pedido à aplicação

Converter curl para código

Transforme um pedido testado no terminal num script Python, numa chamada Fetch ou em código PHP. Reveja os dados e as diferenças do ambiente antes de o integrar no projeto.

curlcódigo do pedido
Conversão no navegador
01

Cole um pedido HTTP com os cabeçalhos e o corpo. São aceites aspas POSIX e continuação de linha com barra invertida.

POSTexample.com3 cabeçalhos
02
async function main() {
  const response = await fetch("https://example.com/api/messages", {
    method: "POST",
    headers: [
      ["Authorization", "Bearer YOUR_TOKEN"],
      ["Content-Type", "application/json"],
      ["Accept", "application/json"]
    ],
    body: "{\"message\":\"Hello from curl\",\"enabled\":true}",
    redirect: "manual",
    credentials: "omit"
  });
  console.log(response.status);
  console.log(await response.text());
}

main().catch(console.error);

Fetch no navegador ou Node.js 18+

Antes de executar o código

  • O conversor não envia pedidos. O código contém a URL, os cabeçalhos e as credenciais introduzidas; reveja-o antes de partilhar.
  • Fetch no navegador está sujeito a CORS. Com credentials: omit, os cookies não são enviados automaticamente; configure as credenciais se necessário. Redirecionamentos manuais podem produzir respostas opacas.

Sem registo nem execução de comandos. Os dados são processados no navegador.

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çãoResultado
URL / --urlUma URL HTTP ou HTTPS completa
-X / --requestMétodo HTTP indicado explicitamente
-H / --headerNome e valor; duplicados e valores vazios exigem revisão
-d / --data / --data-raw / --data-binaryCorpo incluído no comando; mantém a ordem dos argumentos
--data-urlencode / -GCodifica valores; -G coloca os dados na consulta da URL
--jsonMantém o texto JSON e acrescenta cabeçalhos JSON por omissão
-u / --userBasic Auth com username:password
-L / -I / -kRedirecionamentos, HEAD e validação TLS; Fetch não suporta -k
-b / -A / -eCookie, User-Agent e Referer sujeitos às regras do navegador
--compressed / -s / -S / -v / -iDescompressã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.

Documentação: curl · Requests · Fetch