Skip to content

API REST para uma biblioteca com autenticação JWT

License

Notifications You must be signed in to change notification settings

JonProg/API_Library

Repository files navigation

API Biblioteca | DRF

DjangoREST JWT Docker Swagger Insomnia

apiy.gif

Runing project using docker:

Modifique o .env antes de rodar a API os dados estaram no docker-compose.yml

git clone git@github.com:JonProg/API_Library.git
cd API_Library
docker compose up -d --build
docker compose exec web python manage.py makemigrations
docker compose exec web python manage.py migrate
#A api será executada na porta 8000 -> http://127.0.0.1:8000

Endpoints

Books Routes

  • GET /api/books/: Lista todos os livros com opções de filtro por category, author e title.

  • POST /api/books/: Cria um novo livro (administradores).

  • PUT /api/books/<id>/: Atualiza um livro existente (administradores).

  • DELETE /api/books/<id>/: Remove um livro existente (administradores).

  • PATCH /api/books/borrowed/<book_id>/: Permite que um usuário faça o empréstimo de um livro.

  • PATCH /api/books/refund/<book_id>/: Permite que um usuário devolva um livro.


User Routes

  • GET /api/user/: Retorna os dados do usuário logado, incluindo livros emprestados.

  • PATCH /api/user/: Atualiza informações do usuário logado (nome de usuário, e-mail).
  • DELETE /api/user/: Deleta a conta do usuário logado.
  • POST /api/user/register/: Registra um novo usuário.
  • POST /api/user/login/: Realiza login com username e password e retorna tokens JWT nos cookies.

JWT configuration through cookies

def set_jwt_cookie(response, token, refresh_token):
    """Define cookies for JWT tokens."""
    access_expiration = timezone.now() + datetime.timedelta(minutes=25) 
    refresh_expiration = timezone.now() + datetime.timedelta(days=7)

    response.set_cookie(
        key='access',
        value=token,
        expires=access_expiration,
        httponly=True,
        secure=settings.SECURE_COOKIES,
        samesite='Lax'
    )
    response.set_cookie(
        key='refresh',
        value=refresh_token,
        expires=refresh_expiration,
        httponly=True,
        secure=settings.SECURE_COOKIES,
        samesite='Lax'
    )
    return response

About

API REST para uma biblioteca com autenticação JWT

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages