Criando APIs REST com FastAPI: uma estrutura Python moderna

Guia passo a passo para criar uma API RESTful usando FastAPI, incluindo criação de endpoint, validação e implantação.

Aprenda a criar uma API RESTful usando FastAPI em Python com este guia passo a passo. Cobrimos a criação de pontos de extremidade, a validação de entrada usando Pydantic e estratégias de implantação para uma API moderna e de alto desempenho.

Programação
Autor
Afiliação
Data de Publicação

8 de fevereiro de 2024

Data de Modificação

29 de abril de 2025

Palavras-chave

Tutorial FastAPI, REST API Python FastAPI, Crie uma API com FastAPI, Guia FastAPI, API REST Python

Introdução

FastAPI é uma estrutura web moderna e de alto desempenho para construir APIs RESTful com Python. Aproveitando a programação assíncrona e a validação automática de dados, o FastAPI permite criar APIs escaláveis de maneira rápida e eficiente. Neste tutorial, você aprenderá como criar uma API real que fornece dados de produtos para um cenário de comércio eletrônico. Abordaremos a criação de pontos de extremidade, a validação de entrada usando modelos Pydantic, a execução e o teste da API e a exploração de estratégias de implantação para uma API de nível de produção.



Importando pacotes necessários

Para manter nosso código organizado e evitar repetições, começamos importando os pacotes necessários. Isso garante que todos os blocos de código subsequentes tenham acesso às bibliotecas necessárias.

#|label: import-packages
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

Criando um aplicativo FastAPI básico com dados de exemplos reais

Começaremos inicializando um aplicativo FastAPI e criando pontos de extremidade. Em nosso exemplo, a API fornecerá dados de produtos para um cenário de comércio eletrônico.

API básica Exemplo

#|label: create-app
app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Welcome to the FastAPI Products API!"}

class Product(BaseModel):
    id: int
    name: str
    price: float
    category: str

# Dados de produto de amostra.
products = [
    {"id": 1, "name": "Wireless Mouse", "price": 29.99, "category": "Electronics"},
    {"id": 2, "name": "Bluetooth Headphones", "price": 59.99, "category": "Electronics"},
    {"id": 3, "name": "Coffee Maker", "price": 79.99, "category": "Home Appliances"},
    {"id": 4, "name": "Electric Kettle", "price": 39.99, "category": "Home Appliances"},
    {"id": 5, "name": "Smartphone Stand", "price": 19.99, "category": "Accessories"}
]

@app.get("/api/products", response_model=list[Product])
def get_products():
    return products

if __name__ == "__main__":
    # Execute o aplicativo na porta 8000 com a depuração ativada.
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

Executando e testando a API

Para executar sua API Flask, execute seu script usando, por exemplo, python api.py.

Nota

Depois que sua API estiver em execução, você poderá acessá-la visitando http://localhost:5000/ no seu navegador da web.

Testando sua API

Teste sua API usando cURL ou Postman. Por exemplo, você pode executar os seguintes comandos no seu terminal:

curl http://127.0.0.1:8000/
curl http://127.0.0.1:8000/api/products

Esses comandos devem retornar respostas JSON com uma mensagem de boas-vindas e os dados do produto, respectivamente.

Tratamento de erros e validação de entrada

O FastAPI usa modelos Pydantic para validar os dados de entrada. Além disso, o tratamento adequado de erros garante que sua API responda corretamente a solicitações incorretas.

Exemplo: Endpoint aprimorado com validação

#|label: enhanced-endpoint
@app.get("/api/product/{product_id}", response_model=Product)
def get_product(product_id: int):
    for product in products:
        if product["id"] == product_id:
            return product
    raise HTTPException(status_code=404, detail="Product not found")

Este endpoint recupera um produto pelo seu ID e, se o produto não for encontrado, gera um erro 404.

Estratégias de implantação

Para implantação em produção, considere estas estratégias:

  • Uvicorn com Gunicorn:
    Implante seu aplicativo FastAPI usando Gunicorn com workers Uvicorn para obter melhor desempenho:

    gunicorn --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 your_script:app
  • Containerização:
    Use o Docker para conteinerizar seu aplicativo. Um exemplo de Dockerfile é mostrado abaixo.

Exemplo de Dockerfile

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["gunicorn", "--workers", "4", "--worker-class", "uvicorn.workers.UvicornWorker", "--bind", "0.0.0.0:8000", "your_script:app"]

Substitua your_script pelo nome do seu arquivo Python que contém o aplicativo FastAPI.

Executando e testando a API (recapitulação)

Depois de implantado, use ferramentas como cURL, Postman ou estruturas de teste automatizadas para verificar seus endpoints e garantir que sua API se comporte conforme o esperado na produção.

Conclusão

O FastAPI fornece uma estrutura moderna, eficiente e fácil de usar para criar APIs RESTful em Python. Seguindo este guia, você aprendeu como criar uma API do mundo real com dados de produtos, implementar validação de entrada e tratamento de erros e explorar estratégias de implantação para aplicativos de nível de produção. Com essas habilidades, você pode criar APIs escaláveis que alimentam aplicativos da web modernos e serviços orientados a dados.

Leitura adicional

Boa programação e aproveite a criação e a implantação de sua API RESTful com FastAPI!

Explore mais artigos

Nota

Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.

placeholder

placeholder
Nenhum item correspondente
De volta ao topo

Reuso

Citação

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Criando APIs REST com FastAPI: uma estrutura Python moderna},
  date = {2024-02-08},
  url = {https://www.datanovia.com/pt/learn/programming/python/tools/fastapi-rest-api.html},
  langid = {pt}
}
Por favor, cite este trabalho como:
Kassambara, Alboukadel. 2024. “Criando APIs REST com FastAPI: uma estrutura Python moderna.” February 8, 2024. https://www.datanovia.com/pt/learn/programming/python/tools/fastapi-rest-api.html.