Capítulo 3.5: Documentação Automática Swagger
Tempo de Estudo: 30 minutos
1. Documentação da API: Manual de Operações de uma Estação Espacial
Imagine que você é um novo astronauta chegando à ISS. Como você saberia qual botão faz o quê e como operar o braço robótico? Você precisaria de um manual detalhado e atualizado.
A documentação da API é o mesmo tipo de manual para desenvolvedores. Ela explica:
- Quais "portas de acoplamento" (endpoints) estão disponíveis.
- Quais "comandos" (métodos HTTP) podem ser enviados.
- Qual "carga" (dados) precisa ser transmitida.
- Qual "telemetria" (respostas) esperar.
O problema é que escrever a documentação manualmente é demorado, tedioso e quase sempre se torna desatualizado.
💡 Analogia espacial:
A documentação manual são projetos em papel que ficam no arquivo e não são atualizados após a modernização da estação. A documentação automática do FastAPI é um monitor interativo no Centro de Controle de Missões, que é atualizado em tempo real após cada mudança na estação.
2. A Magia do FastAPI: Como Funciona?
O FastAPI faz todo o "trabalho sujo" para você, com base no seu próprio código. Ele escaneia:
- Rotas: Todos os decoradores
@app.get
,@app.post
, etc. - Parâmetros: Parâmetros de caminho (
ship_id: int
) e de consulta. - Modelos Pydantic: Seus "projetos" (
Spaceship
,SpaceshipCreate
). - Docstrings: Descrições que você escreve entre aspas triplas.
Com base nesses dados, o FastAPI gera um esquema de acordo com o padrão OpenAPI (anteriormente conhecido como Swagger) e depois o exibe através de duas interfaces bonitas.
3. Explorando o "Monitor do CCM": Swagger UI
Swagger UI é uma interface interativa que permite não apenas ler a documentação, mas também testar a API diretamente do navegador.
Abra http://127.0.0.1:8000/docs
Você verá:
- Lista de endpoints: Agrupados por tags (por padrão, pelo nome do recurso) e coloridos com as cores dos métodos HTTP.
- Descrições: Textos das suas docstrings (
"""..."""
) são exibidos como descrições dos endpoints. - Parâmetros: Mostra quais parâmetros (como
ship_id
) o endpoint espera, seu tipo e obrigatoriedade. - Corpo da Requisição (Request Body): Para
POST
ePUT
, mostra o esquema JSON gerado a partir do seu modelo Pydantic (SpaceshipCreate
). - Respostas (Responses): Mostra os possíveis códigos de status e esquemas de resposta, baseados em
response_model
. - Botão "Try it out": Permite preencher os parâmetros e enviar uma requisição real para o seu servidor.
4. Melhorando a Documentação: Tags e Descrições
Vamos tornar nossa documentação ainda mais profissional.
Passo 1: Adicionar metadados ao FastAPI
Ao criar app
, você pode passar informações gerais sobre sua API.
Altere a linha app = FastAPI()
em main.py
:
# main.py
app = FastAPI(
title="Fleet Management API",
description="API para gerenciamento de frota de naves espaciais.",
version="1.0.0",
)
Passo 2: Agrupar endpoints usando tags Você pode adicionar tags a cada endpoint para agrupá-los por significado.
Adicione o parâmetro tags
aos decoradores:
# GET /spaceships
@app.get("/spaceships", response_model=List[Spaceship], tags=["Naves Espaciais"])
# ...
# GET /spaceships/{ship_id}
@app.get("/spaceships/{ship_id}", response_model=Spaceship, tags=["Naves Espaciais"])
# ...
# POST /spaceships
@app.post("/spaceships", response_model=Spaceship, status_code=201, tags=["Naves Espaciais"])
# ...
# e assim por diante para PUT e DELETE
5. Visão Alternativa: ReDoc
O FastAPI fornece outra interface para documentação "pronta para uso" — ReDoc. Ela é menos interativa, mas é frequentemente considerada mais legível e excelente para documentação estática.
Abra http://127.0.0.1:8000/redoc
Você verá um layout de três colunas com navegação, descrições de endpoints e esquemas de dados. Esta é uma ótima maneira de fornecer documentação aos seus "clientes" (por exemplo, a equipe de frontend).
Quiz para Fixação
🚀 Resumo do Capítulo:
Você viu uma das "superpotências" mais poderosas do FastAPI — a criação de documentação sem nenhum esforço.
- 📖 Sua API agora tem dois tipos de documentação atualizada: Swagger UI e ReDoc.
- 🔬 A documentação é interativa e permite testar a API em tempo real.
- 🏷️ Você aprendeu a aprimorá-la com metadados e tags.
O manual de operações está pronto e sempre atualizado! No capítulo final desta seção, aprenderemos a lidar com "anomalias espaciais" — erros e dados incorretos.
📌 Verificação:
- Certifique-se de que o título, a descrição e os endpoints agrupados por tags são exibidos em
http://127.0.0.1:8000/docs
.- Verifique se seu modelo
Spaceship
está visível na seção "Schemas".- Abra
http://127.0.0.1:8000/redoc
e avalie a visão alternativa.⚠️ Se as alterações não aparecerem:
- Certifique-se de que salvou o arquivo
main.py
.- Verifique que o servidor
uvicorn
está executando com a flag--reload
e recarregou com sucesso.