Spec Backend Com Python E Fastapi • Trilha Progressiva em 4 Níveis


🎯 Nível 1: Fundamentos

Problema 18.1 — Customização de Metadados e Tags no Swagger UI

Contexto: Customização de Metadados e Tags no Swagger UI no contexto de Documentação OpenAPI, Swagger e Healthchecks.

Requisitos de Execução:

  1. Configurar descrições detalhadas, sumários, responses personalizadas e tags com metadados no OpenAPI.

Resultado Esperado

Swagger UI documentado com tags agrupadas e descrições ricas.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_18_1_SeuNome
  2. Envie na tarefa: Atividade Cap 18 - Documentação OpenAPI, Swagger e Healthchecks
🔑 Gabarito de Código & Solução Comentada
# openapi_metadata.py
from fastapi import FastAPI

tags_metadata = [
    {"name": "Usuários", "description": "Operações de gestão de usuários e autenticação."},
    {"name": "Pedidos", "description": "Processamento de pedidos e checkout."}
]

app = FastAPI(
    title="Plataforma E-Commerce API",
    description="API Corporativa documentada com OpenAPI 3.1",
    version="2.0.0",
    openapi_tags=tags_metadata
)

🔍 Nível 2: Prática

Problema 18.2 — Exemplos Ricos de Requisição e Resposta no OpenAPI Schema

Contexto: Exemplos Ricos de Requisição e Resposta no OpenAPI Schema no contexto de Documentação OpenAPI, Swagger e Healthchecks.

Requisitos de Execução:

  1. Configurar openapi_examples no Pydantic Field e Body para exibir payloads de exemplo na documentação interativa.

Resultado Esperado

Exemplos de payload exibidos no Swagger UI.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_18_2_SeuNome
  2. Envie na tarefa: Atividade Cap 18 - Documentação OpenAPI, Swagger e Healthchecks
🔑 Gabarito de Código & Solução Comentada
# openapi_examples.py
from pydantic import BaseModel, Field

class PedidoRequest(BaseModel):
    item: str = Field(..., examples=["Mouse Ergonômico"])
    qtd: int = Field(..., examples=[2])
    valor: float = Field(..., examples=[199.90])

print("Exemplo configurado:", PedidoRequest.model_json_schema()["properties"]["item"]["examples"])

⚡ Nível 3: Integração

Problema 18.3 — Healthcheck Robusto com Verificação de Dependências (DB, Redis)

Contexto: Healthcheck Robusto com Verificação de Dependências (DB, Redis) no contexto de Documentação OpenAPI, Swagger e Healthchecks.

Requisitos de Execução:

  1. Implementar endpoint /health/deep que verifique conectividade real com o banco e cache antes de retornar 200 ou 503.

Resultado Esperado

Healthcheck: Banco OK, Redis OK -> Status 200 Healthy.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_18_3_SeuNome
  2. Envie na tarefa: Atividade Cap 18 - Documentação OpenAPI, Swagger e Healthchecks
🔑 Gabarito de Código & Solução Comentada
# health_deep.py
def verificar_dependencias():
    status_db = True
    status_redis = True
    tudo_ok = status_db and status_redis
    return {
        "status": "HEALTHY" if tudo_ok else "UNHEALTHY",
        "checks": {"database": status_db, "redis": status_redis}
    }

print(verificar_dependencias())

🏆 Nível 4: Desafio Corporativo

Problema 18.4 — Exportação do Schema OpenAPI JSON para Pipelines de CI/CD

Contexto: Exportação do Schema OpenAPI JSON para Pipelines de CI/CD no contexto de Documentação OpenAPI, Swagger e Healthchecks.

Requisitos de Execução:

  1. Criar script para exportar o arquivo openapi.json estático para geração automatizada de SDKs de clientes.

Resultado Esperado

Arquivo openapi.json exportado com sucesso (45 endpoints mapeados).

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_18_4_SeuNome
  2. Envie na tarefa: Atividade Cap 18 - Documentação OpenAPI, Swagger e Healthchecks
🔑 Gabarito de Código & Solução Comentada
# export_openapi.py
import json
from fastapi import FastAPI

app = FastAPI(title="SDK Generator API", version="1.0.0")

def exportar_schema():
    schema = app.openapi()
    return json.dumps(schema, indent=2)

print("Schema OpenAPI exportado com sucesso (chars:", len(exportar_schema()), ")")