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
= FastAPI()
app
@app.get("/")
def read_root():
return {"message": "Welcome to the FastAPI Products API!"}
class Product(BaseModel):
id: int
str
name: float
price: str
category:
# 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
="0.0.0.0", port=8000) uvicorn.run(app, host
Executando e testando a API
Para executar sua API Flask, execute seu script usando, por exemplo, python api.py
.
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
- Crie sua primeira API com Flask
- Web Scraping com BeautifulSoup
- Automação em Python: agendamento e automação de tarefas
Boa programação e aproveite a criação e a implantação de sua API RESTful com FastAPI!
Explore mais artigos
Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.
Reuso
Citação
@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}
}