Backend e APIs · Guia Scraft

Aprender FastAPI: do código Python a uma resposta HTTP

Uma API oferece operações que outros programas podem chamar. FastAPI permite definir essas operações usando funções Python e anotações de tipo. Antes de começar, pratique funções, dicionários e exceções; entender uma requisição HTTP também ajuda a separar entrada, processamento e resposta.

Antes de começar

Conheça funções, dicionários e anotações de tipo. Use Python 3.10 ou superior em um ambiente virtual local com fastapi[standard].

O que você vai praticar

  • Criar uma rota GET com um parâmetro inteiro no caminho.
  • Relacionar uma requisição HTTP à validação e à resposta JSON.
  • Distinguir o servidor de desenvolvimento de uma publicação de API.

Prepare um ambiente para o exemplo

Em um ambiente virtual local com Python instalado, instale o pacote com python -m pip install "fastapi[standard]". Salve o código abaixo em main.py e inicie com fastapi dev main.py. Este exemplo roda no seu computador: o editor de exercícios da Scraft não é um servidor HTTP público.

from fastapi import FastAPI

app = FastAPI()

@app.get("/dobro/{numero}")
def calcular_dobro(numero: int):
    return {"numero": numero, "dobro": numero * 2}

Acompanhe uma requisição do começo ao fim

Abra http://127.0.0.1:8000/dobro/4 no navegador. A rota recebe 4 pelo caminho, valida o tipo int e chama calcular_dobro. O dicionário retornado é convertido em uma resposta JSON. Em /docs, a documentação interativa permite explorar as operações registradas.

Agora teste /dobro/abc. Como abc não representa um inteiro, a requisição é rejeitada pela validação antes de executar o corpo da função. Tipos ajudam a descrever o contrato, mas regras do negócio, como permitir apenas números positivos, precisam ser definidas explicitamente.

Resultado esperado

{"numero":4,"dobro":8}

O que estudar depois da primeira rota

Pratique parâmetros de consulta, corpos de requisição e modelos Pydantic. Em seguida, separe as regras da aplicação das operações HTTP e escreva testes para respostas válidas e inválidas. Essa separação permite alterar a API sem reescrever toda a lógica.

async def é útil quando a função aguarda operações assíncronas compatíveis, como um cliente HTTP ou um driver de banco assíncrono. Acrescentar async a uma função com operações bloqueantes não elimina o bloqueio. Antes de conectar serviços reais, defina prazos de espera, tratamento de falhas e limites de concorrência.

O servidor de desenvolvimento serve para experimentar localmente. Publicar uma API envolve configuração própria de execução, autenticação quando necessária e observabilidade. A trilha de backend da Scraft conecta esses assuntos gradualmente.

Do conceito ao código

Sua vez de praticar

Crie uma rota /quadrado/{numero}, com numero inteiro, que devolva o número recebido e seu quadrado. Verifique também uma entrada inválida.

Confira estes casos

  • GET /quadrado/3: {"numero": 3, "quadrado": 9}.
  • GET /quadrado/-2: {"numero": -2, "quadrado": 4}.
  • GET /quadrado/abc: erro de validação HTTP 422.
Preciso de uma dica

Use uma anotação int no parâmetro e mantenha o cálculo separado da escolha do caminho.

Continue pela documentação oficial

Ler este guia em texto