Skip to content

guilopes15/tcc_madr

Repository files navigation

O que é o MADR?

Madr ou Meu Acervo Digital de Romances é uma API para gestão de livros. Este projeto surgiu como tcc do curso FastZero, disponibilizado pelo Dunossauro.

Observações iniciais

Neste projeto decidi utilizar a mesma estrutura do curso fastzero, por ser o meu primeiro projeto com o framework FastAPI.

Bibliotecas fora do escopo do curso

  • Para sanitizar os nomes usei o python-slugify, esta biblioteca limpa os caracteres especiais, letras maiusculas, acentuação e etc.
poetry add python-slugify

Como utilizar?

Antes de tudo instale o python e o docker na máquina.

É preciso também criar um arquivo .env na raiz do projeto(pasta onde fica o pyproject.toml) com as seguintes variaveis:

DATABASE_URL="postgresql+psycopg://app_user:app_password@localhost:5432/app_db"
SECRET_KEY="your-secret-key"
ALGORITHM="HS256"
ACCESS_TOKEN_EXPIRE_MINUTES=60

Depois execute:

docker compose up --build

Com isso a API já esta rodando localmente dentro de um conteiner docker.

Swagger

Utilize o swagger para testar todas as rotas e verificar os schemas.

Acesse:

localhost:8000/docs

Login

Alguns endpoints é necessario estar logado para acessar, e este projeto não possui uma tela de login, então utilize o swagger para isso. Os endpoints com login required é necessario passar informações no header da requisição.

hearders={'Authorization': 'Bearer {token}'}

Rotas

Auth

  • Token JWT

É preciso ter o token jwt do tipo Bearer para realizar a autentificação, então faça um post no seguinte endpoint:

POST /auth/token

{
    'username': 'test@test.com', 
    'password': 'password'
}
  • Refresh Token - login required

O token expira em 60 minutos, então faça um post no endpoint abaixo antes do tempo expirar, para permanecer utilizando a aplicação:

POST /auth/refresh_token

Users, Livro e Romancista

Utilize o redoc para mais informações sobre todas as rotas disponíveis.

localhost:8000/redoc

Releases

No releases published

Packages

 
 
 

Contributors

Languages