• Sobre
• Autores
Esse projeto faz parte da entrega 2 - Desenvolvimento da API da equipe Library Loops do Bootcamp de desenvolvimento Fullstack do Avanti/Atlântico.
Ele servirá como o backend da aplicação para as operações necessárias de gestão de troca de livros e dos usuários.
-
Implementar uma API utilizando Node.js e Express;
-
Configurar Prisma ORM para interagir com o banco de dados PostgreSQL;
-
Desenvolver endpoints para as operações CRUD (Create, Read, Update, Delete) necessárias para a gestão de usuários e livros;
-
Implementar autenticação segura usando JWT (JSON Web Token);
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas:
Além disto é bom ter um editor para trabalhar com o código como VSCode
# Clone este repositório
$ git clone git@github.com:LibraryLoops/entrega2-api.git
# Acesse a pasta do projeto no terminal/cmd
$ cd entrega2-api
# Instale as dependências
$ npm install
# Crie um arquivo .env de acordo com as variáveis de ambiente que estão no arquivo .env.example
# Migração a migração do banco de dados
$ npm run prisma:migrate
# Execute a aplicação
$ npm run dev
# O servidor inciará na porta:3000 - acesse http://localhost:3000
A API expõe os seguintes endpoints a partir da base URL localhost:3000
:
POST /auth/login
- Realiza o login de um usuário.
POST /usuarios
- Cria um novo usuário.GET /usuarios
- Obtém todos os usuários.GET /usuarios/:id
- Obtém um usuário por ID.GET /usuarios/:usuarioId/livros
- Obtém os livros de um usuário por ID.POST /usuarios/:usuarioId/livros
- Cadastra um livro para um usuário.PUT /usuarios/:id
- Atualiza um usuário por ID.PUT /usuarios/:usuarioId/livros/:id
- Atualiza um livro de um usuário por ID.DELETE /usuarios/:id
- Exclui um usuário por ID.DELETE /usuarios/:usuarioId/livros/:id
- Exclui um livro de um usuário por ID.
GET /livros
- Obtém todos os livros.GET /livros/:id
- Obtém um livro por ID.POST /livros
- Cria um novo livro.PUT /livros/:id
- Atualiza um livro por ID.DELETE /livros/:id
- Exclui um livro por ID.
GET /cargos
- Obtém todos os cargos.GET /cargos/:id
- Obtém um cargo por ID.POST /cargos
- Cria um novo cargo.PUT /cargos/:id
- Atualiza um cargo por ID.DELETE /cargos/:id
- Exclui um cargo por ID.
GET /troca-pedidos
- Obtém todos os pedidos de troca.GET /troca-pedidos/:id
- Obtém um pedido de troca por ID.POST /troca-pedidos
- Cria um novo pedido de troca.PUT /troca-pedidos/:id
- Atualiza um pedido de troca por ID.DELETE /troca-pedidos/:id
- Exclui um pedido de troca por ID.
GET /avaliacao-livros
- Obtém todos as avaliações de livros.GET /avaliacao-livros/:id
- Obtém uma avaliação de um livro por ID.POST /avaliacao-livros
- Cria uma nova avaliação de um livro.PUT /avaliacao-livros/:id
- Atualiza uma avaliação de um livro por ID.DELETE /avaliacao-livros/:id
- Exclui uma avaliação de um livro por ID.
GET /livros-desejados
- Obtém todos os livros desejados.GET /livros-desejados/:id
- Obtém um livro desejado por ID.POST /livros-desejados
- Cria um novo livro desejado.PUT /livros-desejados/:id
- Atualiza um livro desejado por ID.DELETE /livros-desejados/:id
- Exclui um livro desejado por ID.
GET /reputacao-usuarios
- Obtém todas as reaputações (avaliação entre usuários) de usuário.GET /reputacao-usuarios/:id
- Obtém uma avaliação de um usuário por ID.POST /reputacao-usuarios
- Cria uma nova avaliação de um usuário.PUT /reputacao-usuarios/:id
- Atualiza uma avaliação de um usuário por ID.DELETE /reputacao-usuarios/:id
- Exclui uma avaliação de um usuário por ID.
GET /usuario-cargos
- Obtém todos os cargos ddos usuários.GET /usuario-cargos/:id
- Obtém um cargo de um usuário por ID.POST /usuario-cargos
- Cria um novo cargo de um usuário.PUT /usuario-cargos/:id
- Atualiza um cargo de um usuário por ID.DELETE /usuario-cargos/:id
- Exclui um cargo de um usuário por ID.
limite
(opcional): Número de itens por página. Valor padrão é5
.pagina
(opcional): Número da página a ser retornada. Valor padrão é1
.ordenacao
(opcional): Campo e ordem de ordenação no formatocampo:ordem
. Valor padrão éid:asc
.
GET /endpoint?limite=10&pagina=2&ordenacao=nome:desc
As seguintes ferramentas foram usadas na construção do projeto:
API (NodeJS )
-
Editor: Visual Studio Code
-
Markdown: StackEdit, Markdown Emoji
-
Teste de API: Insomnia
Dirceu dos Santos 🏊
Alexandro Sousa 🚀
Heloisa Cativo 🐭
Thiago Batista 🚀