# Tradutor de requisições HTTP

> Cole um comando curl e veja-o explicado sinalizador por sinalizador, depois traduzido para fetch, uma requisição HTTP crua, HTTPie e Python requests. Local e offline; o comando é decodificado no seu navegador e nada é enviado ou executado.

- Tool: https://ronutz.com/pt-BR/tools/http-request-translator
- Family: Web e HTTP

---

## O que faz

Cole um comando `curl` e a ferramenta o explica sinalizador por sinalizador, depois o traduz para quatro outras formas: uma chamada `fetch` de navegador, uma requisição HTTP crua, um comando HTTPie e código Python `requests`. O comando é tokenizado e decodificado no seu navegador; nada é jamais enviado, e nenhuma requisição é executada.

## Uma análise, cinco visões

Por baixo há um único passo: a ferramenta analisa seu comando `curl` em um único modelo de requisição, capturando o método, a URL, os cabeçalhos, o corpo, a autenticação e as demais opções. Tudo o que você vê é derivado desse único modelo. Como traduzir um comando corretamente já exige entender cada sinalizador, a explicação sinalizador por sinalizador é justamente esse mesmo modelo exibido com rótulos, e é por isso que a explicação e as traduções sempre concordam.

## As formas que ela produz

- **curl explicado.** Cada opção é nomeada e descrita, para que um sinalizador desconhecido deixe de ser um mistério.
- **fetch.** A chamada da Fetch API do navegador, seguindo a semântica da MDN, pronta para colar no JavaScript.
- **HTTP cru.** A linha de requisição, os cabeçalhos e o corpo de fato, como iriam para a rede, que é a forma mais clara de ver exatamente o que uma requisição é.
- **HTTPie.** O comando `http` equivalente, para quem prefere esse cliente.
- **Python requests.** O código equivalente usando a biblioteca Requests.

## Por que traduzir em vez de executar

A ferramenta deliberadamente nunca executa a requisição. Essa é uma escolha de privacidade e segurança: você pode decodificar e converter um comando que carrega credenciais ou aponta para um host interno sem que nada disso saia do seu navegador, e sem disparar o que quer que a requisição faria. Ela é uma tradutora e uma explicadora, não um cliente.

## Como usar

Cole um comando `curl` e leia a explicação sinalizador por sinalizador e as quatro traduções. A conversão é determinística e local, então o mesmo comando sempre produz a mesma saída.

## Standards and references

- [curl - man page (command options)](https://curl.se/docs/manpage.html)
- [RFC 9110 - HTTP Semantics](https://www.rfc-editor.org/rfc/rfc9110)
- [MDN - Using the Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch)
- [HTTPie - Documentation](https://httpie.io/docs/cli)
- [Requests - Quickstart](https://requests.readthedocs.io/en/latest/user/quickstart/)

## Related reading

- [Cabeçalhos, autenticação e cookies no curl](https://ronutz.com/pt-BR/learn/curl-headers-auth-and-cookies.md): Cabeçalhos, autenticação e cookies são como uma requisição se identifica e se autoriza. -H adiciona cabeçalhos, -u é HTTP Basic, um token bearer é apenas um cabeçalho, e -b/-c cuidam de cookies. Todos são sensíveis.
- [Como o curl infere o método HTTP](https://ronutz.com/pt-BR/learn/curl-method-inference.md): O curl nem sempre precisa de -X para escolher um método. Dados no corpo implicam POST, -I implica HEAD, -G força GET, e um -X explícito sempre vence. Conhecer as regras diz num relance o que uma requisição fará.
- [Lendo um comando curl](https://ronutz.com/pt-BR/learn/reading-a-curl-command.md): Um comando curl é um comando de shell: a palavra curl, um conjunto de opções e uma URL. Lê-lo é ver como o shell primeiro divide a linha (aspas, contrabarras, continuações de linha) e depois como o curl lê sinalizadores curtos, longos e agrupados.
- [Os 27 protocolos que o curl fala](https://ronutz.com/pt-BR/learn/curl-protocols-beyond-http.md): O curl é conhecido como ferramenta de HTTP, mas a versão atual fala 27 esquemas de URL: transferência de arquivos por FTP, SFTP e SMB, e-mail por SMTP, POP3 e IMAP, publish-subscribe MQTT, consultas LDAP e relíquias como Gopher, DICT e Telnet. Conhecer o mapa, e saber quais esquemas começam em texto claro, muda a forma de usar a ferramenta.
- [Sinalizadores de dados do curl e a armadilha do Content-Type](https://ronutz.com/pt-BR/learn/curl-data-flags-and-content-type.md): O curl tem várias formas de anexar um corpo, e elas diferem na codificação e no Content-Type padrão. A grande surpresa é que -d usa codificação de formulário por padrão, não JSON, então um corpo JSON pode ser rotulado errado e recusado.
- [Sinalizadores do curl que mudam a postura de segurança](https://ronutz.com/pt-BR/learn/curl-security-flags.md): Alguns sinalizadores do curl mudam o quão segura é uma requisição: -k desativa a verificação TLS, http envia tudo em texto puro, e credenciais na URL podem vazar. Nenhum torna uma requisição maliciosa, mas cada um vale a leitura antes de executar ou compartilhar um comando.
- [Traduzindo curl para fetch()](https://ronutz.com/pt-BR/learn/curl-to-fetch.md): A API fetch do navegador e o curl descrevem a mesma requisição de formas diferentes. Método, cabeçalhos e corpo se mapeiam de forma limpa, mas algumas diferenças (Content-Type de formulário implícito, cookies e verificação TLS) exigem cuidado.
