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

Página canônica: https://scraft.com.br/aprender-fastapi

Por Scraft. Nível: Intermediário. Atualizado em 7 de setembro de 2026.

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.

```python
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:

```text
{"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.

## 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.

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

## Continue pela documentação oficial

- [FastAPI: primeiros passos](https://fastapi.tiangolo.com/tutorial/first-steps/)
- [FastAPI: concorrência e async/await](https://fastapi.tiangolo.com/async/)

## Seu próximo passo

- [Aprender Python: um caminho da lógica às APIs](https://scraft.com.br/aprender-python)
- [Async e await em Python: entenda a concorrência](https://scraft.com.br/async-await-python)
- [LangGraph Python: entenda estado, nós e grafos](https://scraft.com.br/langgraph-python)

[Ver todos os guias](https://scraft.com.br/aprender-programacao)
