Coder Social home page Coder Social logo

api-avanade-project's Introduction

api-avanade-project

API para o projeto proposto pela Avanade.

Instalação

Configure o MongoDB, popule o banco com o comando de seed npm run seed, na pasta resources se encontram dois arquivos, mova o arquivo env e renomeie para .env .Também tem um arquivo de seed com alguns usuários já criados caso prefira popular o banco com essas informações. No arquivo .env se preferir usar um banco local, trocar a string de DB_CONNECT com as informações do seu banco.

Clone o projeto em seu computador e execute os seguintes comandos:

npm install
npm start

Com isso a API estará sendo executada no link http://localhost:3000

Overview

A API do backend foi feita usando NodeJS, com o intuito de ter endpoints que possam servir a aplicação do bitbank no frontend em Angular. Dessa forma, ela permite fazer as interações com o banco de dados em MongoDB, para Cadastrar e fazer Login de usuários, além de buscar pelas informações relacionados a conta do usuário e proteger os endpoints caso o usuário não esteja logado no sistema. Contém também as verificações necessárias que obedeçam as regras de negócio estabelicida.

Models

Esta é a estrutura do Model de usuários (UserSchema).

Estrutura

{
    "_id": "<ID único aleatório>",
    "cpf": "<Número de CPF do usuário>",
    "password": "<Senha com hash do usuário>",
    "fullName": "<Nome Completo>",
    "email": "<email do usuário>",
    "balance": "<saldo do usuário>",
    "numberAccount": "<Número da conta do usuário>",
    "transactions": "<Objeto com as transações do usuário>" {
        "transactionId": "<ID único da transação aleatório>",
        "transactionNumberAccount": "<Número de conta de quem está sendo realizada a transação>",
        "amountTransferred":  "<Quantia transferida>",
        "transactionDate":  "<Data da transação>",
    }
}

Controllers

Aqui está a lista dos controllers da API da bitbank, organizados em uma tabela mostrando seus métodos, estruturas, ações, parâmetros e seus respectivos retornos.

Users

Aqui estão os usuários do banco.

Método Estrutura Ação Parâmetros Retorno
POST /api/register Cadastra um usuário no banco de dados JSON/email, password, fullName, cpf JSON/mensagem: Usuário cadastrado com sucesso.
POST /api/login Inicia a sessão do usuário JSON/cpf, password JSON/token de autenticação.
GET /user/search Faz uma busca na coleção de usuário filter[cpf], filter[numberAccount] JSON/id, cpf, email, numberAccount
GET /user/:idUser/transactions Recupera as transações do usuário month=1~12 (opcional) JSON/ transaction[date, cpf, ammount]
POST /user/:idUser/transactions Realiza uma transação JSON/ numberAccount, amountTransferred, cpf JSON/ numberAccount, amountTransferred, cpf

Exemplos

Register

POST /api/register
HTTP/1.1 200 OK
{
  "msg": "Usuário cadastrado com sucesso."
}

Login

POST /api/login
HTTP/1.1 200 OK
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjVlNDMxYTY3Zjc3OTNiMjQyODc4MzdiZiIsImVtYWlsIjoidGVzdGVAdGVzdGUuY29tLmJyIn0sImlhdCI6MTU4MTQ2MDU4Nn0.mFRchKmKvtRCE_ZkQetlW_iWgpd5F-K3UpGcWJIYT1c"
}

Search

POST /user/search?filter[numberAccount]=<Número da conta do usuário>
HTTP/1.1 200 OK
{
  "status": "success",
  "filterResults": {
    "id": "<ID único aleatório>",
    "cpf": "<Número de CPF do usuário>",
    "email": "<email do usuário>",
    "numberAccount": "<Número da conta do usuário>"
  }
}

Transactions

GET /user/:idUser/transactions?month=<Mês representado em número>
HTTP/1.1 200 OK
{
  "status": "success",
  "data": [
    {
      "transctionId": "<ID único aleatório>",
      "transactionDate": "<Data da transação>",
      "cpfUser": "<CPF do usuário de quem está sendo realizada a transação>",
      "amountTransferred": "<Quantidade transferida>"
    },
    { "..." }
  ]
}
POST /user/:idUser/transactions
HTTP/1.1 200 OK
{
  "status": "success",
  "data": {
    "numberAccount": "<Número da conta de quem está sendo realizada a transação>",
    "amountTransferred": "<Quantidade transferida>",
    "cpf": "<CPF do usuário de quem está sendo realizada a transação>"
  }
}

api-avanade-project's People

Contributors

tiago-dela-rosa avatar thiagopmaceda avatar

Watchers

James Cloos avatar  avatar alan avatar

Forkers

camachoroberto

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.