Consumindo APIs em uma Aplicação Web com Flask
Neste artigo, você vai aprender:
O que é uma API e como ela funciona
Como consumir APIs usando Python
Integrar uma API em um app web com Flask
Exibir dados dinamicamente em templates HTML
Boas práticas ao trabalhar com APIs
🔹 O que é uma API?
Uma API é um conjunto de regras que permite que sistemas diferentes se comuniquem.
Exemplo: você pode acessar dados do OpenWeatherMap ou da API de filmes do OMDB diretamente do seu aplicativo Python, sem precisar abrir o site manualmente.
Tipos comuns de APIs:
REST API → retorna dados geralmente em JSON
GraphQL → retorna dados específicos conforme a consulta
SOAP → formato XML, mais antigo e complexo
Para este tutorial, vamos trabalhar com APIs REST que retornam JSON.
🔹 Configurando o Flask
1. Instalação
Crie um ambiente virtual e instale Flask e requests:
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install flask requests
2. Estrutura do Projeto
flask_api_app/
│── app.py
│── templates/
│ ├── index.html
🔹 Consumindo uma API com Python
Vamos usar a API gratuita do OpenWeatherMap para obter a previsão do tempo.
import requests
api_key = "SUA_CHAVE_DE_API"
cidade = "São Paulo"
url = f"http://api.openweathermap.org/data/2.5/weather?q={cidade}&appid={api_key}&lang=pt_br&units=metric"
resposta = requests.get(url)
dados = resposta.json()
print(f"Cidade: {dados['name']}")
print(f"Temperatura: {dados['main']['temp']}°C")
print(f"Clima: {dados['weather'][0]['description']}")
✅ Com isso, conseguimos os dados básicos do clima em formato JSON.
🔹 Integrando a API ao Flask
app.py:
from flask import Flask, render_template, request
import requests
app = Flask(__name__)
API_KEY = "SUA_CHAVE_DE_API"
@app.route("/", methods=["GET", "POST"])
def index():
clima = None
if request.method == "POST":
cidade = request.form["cidade"]
url = f"http://api.openweathermap.org/data/2.5/weather?q={cidade}&appid={API_KEY}&lang=pt_br&units=metric"
resposta = requests.get(url)
if resposta.status_code == 200:
dados = resposta.json()
clima = {
"cidade": dados["name"],
"temperatura": dados["main"]["temp"],
"descricao": dados["weather"][0]["description"]
}
else:
clima = {"erro": "Cidade não encontrada."}
return render_template("index.html", clima=clima)
1. Template HTML (templates/index.html)
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Consulta de Clima</title>
</head>
<body>
<h1>🌤 Consulta de Clima</h1>
<form method="post">
<input type="text" name="cidade" placeholder="Digite a cidade" required>
<button type="submit">Buscar</button>
</form>
{% if clima %}
{% if clima.erro %}
<p style="color:red;">{{ clima.erro }}</p>
{% else %}
<h2>{{ clima.cidade }}</h2>
<p>Temperatura: {{ clima.temperatura }}°C</p>
<p>Clima: {{ clima.descricao }}</p>
{% endif %}
{% endif %}
</body>
</html>
✅ Agora temos um formulário funcional: o usuário digita uma cidade, a aplicação consulta a API e exibe o resultado em tempo real.
🔹 Boas práticas ao consumir APIs
Trate erros de conexão: use
try/exceptpara evitar travamentos.Checar status code: sempre verifique
resposta.status_codeantes de acessar os dados.Limite de requisições: muitas APIs gratuitas possuem limite de chamadas.
Armazenamento em cache: salve resultados em memória ou banco para reduzir chamadas repetidas.
Não exponha sua chave de API: use variáveis de ambiente (
os.environ) para proteger credenciais.
🔹 Possíveis Expansões
Adicionar mais APIs (cotações, notícias, filmes, etc).
Criar dashboard interativo com gráficos usando Plotly ou Chart.js.
Permitir buscas múltiplas e salvar histórico do usuário.
Integrar com Flask-Login para exibir dados personalizados de cada usuário.
🔹 Conclusão
Consumir APIs em Flask é simples e poderoso, permitindo criar aplicações web dinâmicas e interativas sem depender apenas de dados internos.
Com requests, você consegue interagir com qualquer API REST.
Com Flask, é fácil mostrar os dados em páginas HTML usando templates.
Esse conhecimento é a base para projetos mais avançados, como dashboards, sistemas de previsão, aplicações financeiras e muito mais.
💡 Desafio prático: Adapte a aplicação para consumir duas APIs ao mesmo tempo (por exemplo: clima + cotação do dólar) e exibir tudo em uma página.
Comentários
Postar um comentário