bush1D3v / bank_rest_api

API REST com autenticação de usuário, criptografia de senha e integração a banco de dados.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

⛰️ BANK REST API

License   Npm version   Repository size   Pull request

🛠️ Tecnologias e Ferramentas Utilizadas

javascript nodejs postgresql express   nodemon   dotenv   jsonwebtoken   bcrypt   insomnia   beekeeper

📄 Sobre o Projeto

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.

💻 Como executar esse projeto?

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

⚠️ Não se Esqueça

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:

  1. 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
  2. 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.

🗺️ Rotas

A seguir, temos uma lista contendo todas as rotas desta API:

Cadastrar Usuário

  • 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"
    }

Fazer Login

  • 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"
    }

Detalhar Perfil do Usuário Logado

  • 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"
    }

Editar Perfil do Usuário Logado

  • 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

Listar Categorias

  • 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"
      }
    ]

Listar Transações do Usuário Logado

  • 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",   
      }
    ]

Detalhar Transação do Usuário Logado

  • 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",
    }

Cadastrar Transação do Usuário Logado

  • 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",
    }

Atualizar Transação do Usuário Logado

  • 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

Excluir Transação do Usuário Logado

  • 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

Obter Extrato de Transações do Usuário Logado

  • 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
    }

About

API REST com autenticação de usuário, criptografia de senha e integração a banco de dados.

License:MIT License


Languages

Language:JavaScript 100.0%