REST API de um banco com integração a banco de dados, autenticação de usuário e criptografia de senha.
Projeto realizado tentando levar em consideração o princípio de responsabilidade única, SOLID.
Para executar esse projeto localmente, você vai precisar:
- Clonar Esse Repositório
git clone https://github.com/bush1D3v/bank_restful_api
- Instalar dependências
npm install
- Executar projeto com
npm run dev
Para que o projeto funcione corretamente, você precisa configurar o arquivo .env.example
, para que ele aponte para as informações do banco de dados PostgreSQL instalado em sua máquina. Siga os passos abaixo para fazer essa configuração:
-
Configure o arquivo
.env.example
: Para que seja possível a conexão com o seu banco de dados, forneça as informações necessárias para criar a conexão através do dotenv.DB_HOST=your_host DB_PORT=your_port DB_USER=your_user DB_PASS=your_password DB_DATA=your_database JWT_PASS=your_key
-
Execute o Dump SQL: Após configurar o arquivo
.env.example
, certifique-se de ter executado o script SQL fornecido (dump.sql
) no seu banco de dados PostgreSQL. Isso criará as tabelas necessárias.create table usuarios ( id serial primary key, nome text not null, email text not null unique, senha text not null ); ...
Certifique-se de fornecer as informações corretas de acordo com o seu ambiente local. Após essas configurações, o projeto estará pronto para se conectar ao seu banco de dados PostgreSQL local, e sua execução se tornará possível.
Lembre-se de que as informações do banco de dados são sensíveis, portanto, mantenha-as seguras e não compartilhe com terceiros.
A seguir, temos uma lista contendo todas as rotas desta API:
-
POST
/usuario
Cria um novo usuário no sistema.
Exemplo de requisição:
{ "nome": "José", "email": "jose@email.com", "senha": "123456" }
Exemplo de resposta:
{ "id": 1, "nome": "José", "email": "jose@email.com" }
-
POST
/login
Permite que um usuário cadastrado faça login no sistema.
Exemplo de requisição:
{ "email": "jose@email.com", "senha": "123456" }
Exemplo de resposta:
{ "usuario": { "id": 1, "nome": "José", "email": "jose@email.com" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwiaWF0IjoxNjIzMjQ5NjIxLCJleHAiOjE2MjMyNzg0MjF9.KLR9t7m_JQJfpuRv9_8H2-XJ92TSjKhGPxJXVfX6wBI" }
-
GET
/usuario
Obtém os dados do perfil do usuário logado.
🚨 SEM CORPO DE REQUISIÇÃO
Exemplo de Resposta:
{ "id": 1, "nome": "José", "email": "jose@email.com" }
-
PUT
/usuario
Permite que o usuário logado edite seu próprio perfil.
Exemplo de requisição:
{ "nome": "José de Abreu", "email": "jose_abreu@email.com", "senha": "j4321" }
🚨 SEM RESPOSTA DE REQUISIÇÃO
-
GET
/categoria
Lista todas as categorias cadastradas no sistema.
🚨 SEM CORPO DE REQUISIÇÃO
Exemplo de Resposta:
[ { "id": 1, "descricao": "Roupas" }, { "id": 2, "descricao": "Mercado" } ]
-
GET
/transacao
Lista todas as transações associadas ao usuário logado.
🚨 SEM CORPO DE REQUISIÇÃO
Exemplo de Resposta:
[ { "id": 1, "tipo": "saida", "descricao": "Sapato amarelo", "valor": 15800, "data": "2022-03-23T15:35:00.000Z", "usuario_id": 5, "categoria_id": 4, "categoria_nome": "Roupas", }, { "id": 3, "tipo": "entrada", "descricao": "Salário", "valor": 300000, "data": "2022-03-24T15:30:00.000Z", "usuario_id": 5, "categoria_id": 6, "categoria_nome": "Salários", } ]
⭐EXTRA⭐
- Nesta rota, podemos filtrar os tipos de transações de retorno através da URL, desta forma:
GET /transacao?filtro[]=roupas&filtro[]=salários
🎯 Exemplo de resposta:
[ { "id": 1, "tipo": "saida", "descricao": "Sapato amarelo", "valor": 15800, "data": "2022-03-23T15:35:00.000Z", "usuario_id": 5, "categoria_id": 4, "categoria_nome": "Roupas", }, { "id": 3, "tipo": "entrada", "descricao": "Salário", "valor": 300000, "data": "2022-03-24T15:30:00.000Z", "usuario_id": 5, "categoria_id": 6, "categoria_nome": "Salários", } ]
- Nesta rota, podemos filtrar os tipos de transações de retorno através da URL, desta forma:
-
GET
/transacao/:id
Obtém detalhes de uma transação específica associada ao usuário logado.
🚨 SEM CORPO DE REQUISIÇÃO
Exemplo de Resposta:
{ "id": 3, "tipo": "entrada", "descricao": "Salário", "valor": 300000, "data": "2022-03-24T15:30:00.000Z", "usuario_id": 5, "categoria_id": 6, "categoria_nome": "Salários", }
-
POST
/transacao
Permite que o usuário logado cadastre uma nova transação.
Exemplo de requisição:
{ "tipo": "entrada", "descricao": "Salário", "valor": 300000, "data": "2022-03-24T15:30:00.000Z", "categoria_id": 6 }
Exemplo de Resposta:
{ "id": 3, "tipo": "entrada", "descricao": "Salário", "valor": 300000, "data": "2022-03-24T15:30:00.000Z", "usuario_id": 5, "categoria_id": 6, "categoria_nome": "Salários", }
-
PUT
/transacao/:id
Permite que o usuário logado atualize uma transação específica.
Exemplo de requisição:
{ "descricao": "Sapato amarelo", "valor": 15800, "data": "2022-03-23 12:35:00", "categoria_id": 4, "tipo": "saida" }
🚨 SEM RESPOSTA DE REQUISIÇÃO
-
DELETE
/transacao/:id
Permite que o usuário logado exclua uma transação específica.
🚨 SEM CORPO DE REQUISIÇÃO
🚨 SEM RESPOSTA DE REQUISIÇÃO
-
GET
/transacao/extrato
Obtém um resumo das transações do usuário, incluindo o total de entradas e saídas.
🚨 SEM CORPO DE REQUISIÇÃO
Exemplo de resposta:
{ "entrada": 300000, "saida": 15800 }