Depois de muito tempo resolvi me aventurar criando uma API com FastAPI.
Bom, para criar um CRUD (sigla para Create, Read, Update e Delete, que são as operações básicas de um sistema de gerenciamento de banco de dados) com o FastAPI, você precisará seguir os seguintes passos:
- Instale o FastAPI e as dependências necessárias utilizando o seguinte comando:
pip install fastapi
pip install uvicorn
pip install sqlalchemy
pip install databases
- Crie um arquivo main.py e adicione o seguinte código:
from fastapi import FastAPI
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from databases import Database
# cria uma conexão com o banco de dados
engine = create_engine('sqlite:///banco_de_dados.db')
# define o objeto base
Base = declarative_base()
# define a classe que representa a tabela
class Tabela(Base):
__tablename__ = 'tabela'
id = Column(Integer, primary_key=True)
nome = Column(String)
idade = Column(Integer)
# inicializa o FastAPI
app = FastAPI()
# cria a tabela no banco de dados
Base.metadata.create_all(engine)
# cria uma sessão com o banco de dados
Session = sessionmaker(bind=engine)
# cria uma instância do banco de dados
db = Database(engine)
- Adicione os endpoints para as operações CRUD da seguinte maneira:
# endpoint para criar um novo registro
@app.post('/tabela')
async def criar_registro(nome: str, idade: int, session: Session = Depends(get_db)):
registro = Tabela(nome=nome, idade=idade)
session.add(registro)
session.commit()
# endpoint para ler os registros da tabela
@app.get('/tabela')
async def ler_registros(session: Session = Depends(get_db)):
resultado = session.query(Tabela).all()
return resultado
# endpoint para atualizar um registro
@app.put('/tabela/{id}')
async def atualizar_registro(id: int, nome: str, idade: int, session: Session = Depends(get_db)):
registro = session.query(Tabela).get(id)
registro.nome = nome
registro.idade
Com isso temos uma pequeno exemplo de como é feita uma API em FastAPI.
Com essa tecnologia podemos criar muitas coisas.
:)
Top comments (0)