Pular para o conteúdo

    Capítulo 2, Básico

    Instalando e rodando o primeiro app

    Em poucos minutos você tem uma API no ar. O importante é fazer isso dentro de um ambiente isolado, e saber o que cada comando faz.

    Requisitos

    O FastAPI atual exige Python 3.10 ou superior. Para conferir qual Python você tem:

    Terminal
    python3 --version
    

    No Windows, use python --version (ou py --version). Se a versão for mais antiga que a 3.10, atualize antes de continuar.

    Criar o projeto e instalar

    Um ambiente virtual isola as dependências de cada projeto, para que um não quebre o outro. Escolha a ferramenta que você usa:

    Terminal
    uv init minha-api
    cd minha-api
    uv add "fastapi[standard]"
    

    O uv add cria o ambiente, instala o pacote e o registra no pyproject.toml. Para executar qualquer comando dentro do ambiente, use o prefixo uv run.

    Instalar sem ambiente virtual funciona, mas é uma má ideia: dois projetos que precisam de versões diferentes do FastAPI passam a brigar pelo mesmo Python. As aspas em "fastapi[standard]" evitam que o terminal interprete os colchetes.

    O extra [standard] traz o uvicorn (o servidor que roda a aplicação), o comando fastapi e as dependências de formulários e upload. Nos testes, você também vai querer o cliente HTTP que o TestClient usa:

    Terminal
    uv add --dev pytest httpx2
    

    O primeiro app

    Crie o arquivo main.py:

    basico/cap02_instalacao.pylinhas 10 a 17
    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    def home():
        return {"mensagem": "Olá, FastAPI"}
    

    Para ver o que a rota devolve sem subir um servidor, o TestClient faz a requisição em memória. Todo o curso usa esse recurso para mostrar resultados reais:

    basico/cap02_instalacao.pylinhas 19 a 23
    from fastapi.testclient import TestClient
    
    cliente = TestClient(app)
    resposta = cliente.get("/")
    print(resposta.status_code, resposta.json())
    
    Saída
    200 {'mensagem': 'Olá, FastAPI'}
    

    Rodar o servidor

    O comando de desenvolvimento do FastAPI sobe o servidor e reinicia sozinho a cada vez que você salva o arquivo:

    Terminal
    uv run fastapi dev main.py
    

    Abra http://127.0.0.1:8000 no navegador para ver o JSON, e http://127.0.0.1:8000/docs para a documentação interativa. A forma clássica, que você vai encontrar em muito material, chama o uvicorn diretamente e dá o mesmo resultado:

    Terminal
    uv run uvicorn main:app --reload
    

    O texto main:app significa "no módulo main, o objeto chamado app". Em produção, o comando é fastapi run main.py (sem recarga automática), e o capítulo 30 detalha isso.

    As páginas que vêm de graça

    O FastAPI cria sozinho três endereços além das suas rotas:

    basico/cap02_instalacao.pylinha 28
    print(cliente.get("/docs").status_code, cliente.get("/redoc").status_code, cliente.get("/openapi.json").status_code)
    
    Saída
    200 200 200
    
    EndereçoO que é
    /docsSwagger UI: lista as rotas e deixa você testá-las
    /redocA mesma documentação, em um formato de leitura
    /openapi.jsonA descrição da API, que as outras duas páginas usam

    O que é `--reload`

    O recarregamento automático é só para desenvolvimento. Ele observa os arquivos e reinicia o processo a cada mudança, o que consome recursos e não é seguro em produção.

    Exercício 1

    Uma rota de saúde

    Crie um app com a rota GET /saude que devolva {"status": "ok"}, e confira com o TestClient. Rotas assim são usadas por plataformas de deploy para saber se a aplicação está viva.