$ python modulo_6.py

APIs e webhooks

Consumir APIs externas e criar as suas próprias com FastAPI. Webhooks para receber eventos em tempo real.

O que você vai aprender

1. Consumir API externa

import requests

r = requests.get(
    "https://api.github.com/users/iri-afk",
    headers={"Accept": "application/vnd.github+json"},
    timeout=10
)
r.raise_for_status()
data = r.json()
print(data["name"], data["public_repos"])

2. FastAPI — API mínima

pip install fastapi uvicorn[standard] pydantic
main.py
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, EmailStr
from datetime import datetime

app = FastAPI(title="IRN Devs API", version="1.0")

class Lead(BaseModel):
    nome: str
    email: EmailStr
    mensagem: str

leads: list[dict] = []

@app.get("/health")
def health():
    return {"status": "ok", "ts": datetime.utcnow().isoformat()}

@app.post("/leads", status_code=201)
def criar_lead(lead: Lead):
    item = lead.model_dump()
    item["criado_em"] = datetime.utcnow().isoformat()
    leads.append(item)
    return item

@app.get("/leads")
def listar_leads():
    return leads
uvicorn main:app --reload --port 8000
# docs em http://localhost:8000/docs

3. Webhook receptor

from fastapi import Request, Header
import hmac, hashlib

SECRET = b"seu-segredo-webhook"

@app.post("/webhook/pagamento")
async def webhook(request: Request, x_signature: str = Header(None)):
    body = await request.body()
    esperado = hmac.new(SECRET, body, hashlib.sha256).hexdigest()
    if not hmac.compare_digest(esperado, x_signature or ""):
        raise HTTPException(401, "assinatura inválida")
    payload = await request.json()
    # processar evento...
    return {"received": True}
PRODUÇÃO Sempre valide assinatura de webhooks. Nunca confie apenas no IP de origem.
EXERCÍCIO 1. Crie endpoints GET/POST para um recurso (ex.: tarefas).
2. Adicione autenticação simples com header X-API-Key.
3. Consuma sua própria API com requests e salve em JSON.
4. Simule um webhook e valide a assinatura HMAC.

Sumário do curso

Precisa de algo assim, sob medida pro seu negócio?

agendar diagnóstico gratuito →