Adeus Flask? Conheça o FastAPI, o framework que revolucionou o Python com alta performance, validação automática via Pydantic e documentação Swagger pronta.
Durante anos, se você queria construir uma API em Python, a escolha era binária: ou você usava o Django (pesado, bateria inclusa, monolítico) ou o Flask (leve, mas você tinha que montar tudo manualmente).
Ambos funcionam, mas ambos nasceram em uma era onde a web era síncrona e a tipagem de dados no Python era apenas uma sugestão.
Então, surgiu o FastAPI.
Em pouquíssimo tempo, ele se tornou o “queridinho” de startups e grandes empresas (como Netflix e Uber). Por quê? Não é apenas porque ele é rápido na execução (graças ao Starlette). É porque ele é rápido para desenvolver.
O FastAPI promete algo mágico: você escreve código Python moderno (com tipagem), e ele te entrega de graça:
- Uma API ultra-rápida (Assíncrona).
- Validação de dados automática (sem
if type == int). - Uma página de documentação interativa (Swagger UI) que se atualiza sozinha.
Hoje, vamos sair do zero e criar uma API profissional que já nasce documentada.
O Segredo: Type Hints e Pydantic
O FastAPI não trabalha sozinho. Ele se apoia ombros de gigantes.
A grande sacada dele foi abraçar os Type Hints (dicas de tipo) do Python moderno (3.6+).
Em vez de escrever código para validar se o usuário enviou um número ou um texto, você apenas declara o tipo na função. O FastAPI lê essa declaração e usa o Pydantic para validar tudo antes mesmo do seu código rodar.
Tutorial: Sua Primeira API em FastAPI
Vamos ver isso na prática.
1. Instalação
Você vai precisar do FastAPI e de um servidor ASGI (o uvicorn) para rodar a aplicação.
Bash
pip install fastapi "uvicorn[standard]"
2. O “Hello World” Moderno
Crie um arquivo main.py.
Python
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"mensagem": "Olá, Mundo! O FastAPI é incrível."}
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}
Para rodar, vá no terminal:
uvicorn main:app –reload
Nota: O --reload faz o servidor reiniciar a cada vez que você salva o arquivo (ótimo para desenvolvimento).
3. A Mágica da Documentação (Swagger UI)
Aqui está o momento “Uau”.
Com o servidor rodando, abra seu navegador e vá para:
http://127.0.0.1:8000/docs
Você verá uma interface azul e bonita. Essa é a Swagger UI. O FastAPI gerou isso sozinho, lendo o seu código. Você pode clicar nos botões, testar as rotas e ver as respostas, tudo sem escrever uma linha de HTML ou YAML.
4. Validação de Dados Poderosa (Pydantic)
Agora, vamos criar algo real. Imagine receber dados de um produto. No Flask, você teria que checar campo por campo. No FastAPI, você cria um Modelo.
Python
from typing import Optional
from pydantic import BaseModel
# Criamos uma "forma" de como o dado deve ser
class Produto(BaseModel):
nome: str
preco: float
em_oferta: bool = False # Campo opcional com valor padrão
descricao: Optional[str] = None
@app.post("/produtos/")
async def criar_produto(produto: Produto):
# Se chegou aqui, o dado JÁ é válido.
# O 'produto' já é um objeto, não um dicionário solto.
preco_final = produto.preco
if produto.em_oferta:
preco_final = produto.preco * 0.9
return {
"nome": produto.nome,
"preco_final": preco_final,
"descricao": produto.descricao
}
Tente enviar um JSON onde o preco é um texto (ex: "preco": "caro"). O FastAPI vai retornar um erro detalhado automaticamente, dizendo exatamente qual campo está errado. Isso economiza horas de debugging.
5. Async: A Velocidade do Node.js no Python
Você notou o async def no código acima?
O FastAPI é construído sobre o padrão ASGI. Isso significa que ele pode lidar com milhares de requisições simultâneas sem travar, igual ao Node.js ou Go.
Se você precisa consultar um banco de dados ou uma API externa, use await e seu servidor continua livre para atender outros usuários enquanto espera a resposta.
Flask vs. FastAPI: A Hora da Verdade
| Recurso | Flask | FastAPI |
| Filosofia | Minimalista, você escolhe as libs. | Minimalista, mas com bateria de validação inclusa. |
| Velocidade | Padrão WSGI (Síncrono/Bloqueante). | Padrão ASGI (Assíncrono/Não-bloqueante). |
| Validação | Manual ou via extensões (Marshmallow). | Nativa e automática (Pydantic). |
| Documentação | Manual ou plugins complexos. | Automática (/docs). |
Veredito do Mentor:
Use Flask se você está mantendo sistemas legados ou fazendo micro-apps extremamente simples onde tipagem não importa.
Use FastAPI para todo o resto. É o novo padrão da indústria para APIs em Python.
Conclusão
O FastAPI não é apenas um “framework novo”. Ele é a resposta do Python para a web moderna. Ele remove a parte chata do desenvolvimento (validação e documentação) e deixa você focar na regra de negócio.
Se você ama a sintaxe do Python mas olhava com inveja para a performance do Go ou Node.js, seus problemas acabaram.
Desafio: Pegue o código acima, adicione um campo novo ao modelo Produto (como estoque: int) e veja ele aparecer magicamente na documentação em /docs sem você fazer nada extra.
3. SEÇÃO FAQ (Featured Snippets)
O FastAPI é mais rápido que o Flask?
Sim, consideravelmente. Graças ao uso do padrão ASGI e da biblioteca Starlette por baixo do capô, o FastAPI consegue lidar com concorrência de forma nativa (async/await), o que o coloca em patamares de performance próximos ao Node.js e Go, algo que o Flask (WSGI) não consegue alcançar nativamente.
O que é Pydantic no FastAPI?
O Pydantic é uma biblioteca de validação de dados usada nativamente pelo FastAPI. Ela usa os Type Hints do Python para garantir que os dados recebidos pela API (JSON) estejam no formato correto (ex: garantir que um preço seja um número e não um texto).
Preciso saber programação assíncrona (Async/Await) para usar FastAPI?
Não obrigatoriamente. O FastAPI funciona perfeitamente com funções normais (def). Porém, para extrair o máximo de performance e lidar com muitas requisições simultâneas, aprender async e await é altamente recomendado.