Este projeto consiste em um workflow desenvolvido no n8n que atua como um middleware (intermediário) de integração. O objetivo é fornecer uma API unificada e simplificada para consulta de cotações de moedas em tempo real, abstraindo a complexidade e a autenticação da API provedora (AwesomeAPI).
💡 Contexto: Este projeto foi desenvolvido e aprimorado como parte prática do curso de n8n e Automação da Rocketseat.
Em cenários corporativos, expor chaves de API de terceiros (API Keys) diretamente no front-end ou em aplicações clientes é uma falha grave de segurança.
Este workflow resolve isso centralizando a autenticação no backend (n8n) e entregando apenas os dados sanitizados ao solicitante.
O fluxo de dados segue o padrão Input -> Transform -> Request -> Response:
-
Webhook (Trigger): Ponto de entrada da API (POST). Recebe a solicitação do cliente.
-
Data Normalization (Set/Edit Fields): Isola e valida a variável moeda recebida no corpo da requisição, garantindo que o fluxo seguinte receba dados limpos.
-
External API Request (HTTP Node): Realiza a comunicação com a API de economia, injetando o Token de autenticação de forma segura (server-side).
-
Webhook Response: Formata e devolve a resposta JSON da API externa para o cliente original.
- Instância do n8n (Self-hosted ou Cloud)
- Chave de acesso (Token) da AwesomeAPI
- Opcional para testes simples
- Obrigatório para uso em produção ou em escala
- Faça o download do arquivo
.jsondeste workflow - No n8n, vá em: Menu > Import from File
-
- Selecione o arquivo
.json
- Selecione o arquivo
O arquivo JSON foi sanitizado para remover qualquer credencial sensível.
- Abra o nó HTTP Request
- Vá até Query Parameters
- No campo
token, substitua: SUA_CHAVE_API_AQUI pelo seu token real da AwesomeAPI
- Clique no botão Active no canto superior direito da tela do n8n
Após ativado, o workflow expõe um endpoint para consumo externo.
Retorna a cotação atual entre duas moedas ou de uma moeda para o Real (BRL).
-
URL: https://{{seu-dominio-n8n}}/webhook/cotacao
-
Método:
POST
Utilize o Postman para realizar a requisição
| Campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
| moeda | string | Código da moeda ou par de moedas | "USD" |
{
"moeda": "USD"
}{
"USDBRL": {
"code": "USD",
"codein": "BRL",
"name": "Dólar Americano/Real Brasileiro",
"high": "5.15",
"low": "5.10",
"varBid": "0.02",
"pctChange": "0.45",
"bid": "5.14",
"ask": "5.15",
"timestamp": "1678999999",
"create_date": "2024-01-04 10:00:00"
}
}