gdfreitas / nodejs-ciclo-pagamento-api

O projeto consiste em uma api didática de ciclo de pagamentos utilizando as tecnologias MongoDB, NodeJS, Express e Mongoose

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ciclo Pagamento API

O projeto consiste em uma api didática de ciclo de pagamentos utilizando as tecnologias MongoDB, NodeJS, Express e Mongoose containerizado com Docker.

Variáveis de ambientes

"AUTH_SECRET": pode ser utilizada para definir a chave secreta utilizada pelo jsonwebtoken;

Rodando aplicação Docker

docker-compose up ou docker-compose -f docker-compose.dev.yml up

Recursos utilizados

MongoDB - base de dados NoSQL, alta performance, sem esquemas e orientado à documentos.
NodeJS - interpretador de código javascript no lado servidor. express - servidor web não organizado e minimalista para NodeJS
express-query-init - middleware auxiliar para fazer o parse de query parameters numéricos
mongoose - api de mapeamento dos objetos javascript para documentos (ODM - Object Data Mapping) e sistemas de conversão de tipos, validaÇão, criação de consultas e hooks para lógicas de negócio.
mongoose-paginate - auxiliar para montar paginações em consultas ao banco de dados.
noderestful - biblioteca para auxiliar na criação de rotas para recursos no padrão REST no servidor express.
Lodash - biblioteca contendo inúmeros métodos que auxiliam na manipulação de arrays, objetos, strings, etc em javascript.
body-parser - middleware para fazer o parse do body das requests.
pm2 - gerenciador de processos para aplicações NodeJ. Gerenciamento de memória, de cores, quedas na aplicação, etc.
nodemon - utilitário para observer alterações em código e reiniciar servidor de desenvolvimento.

Referências

JsonWebToken implementation for node.js
What are requirements for HMAC secret key?
Conhecendo o JWT na teoria e na prática
Introdução ao mongoose

Curso React Redux - Fundamentos @Udemy
Curso Stack Mean @Udemy

Recursos públicos

POST @ /oapi/signup (cadastra usuário)

{
  "name": "Teste",
  "email": "teste@teste.com",
  "password": "Aa1234#",
  "confirm_password": "Aa1234#"
}

POST @ /oapi/login (obtém o token de autorização)

{
  "email": "teste@gmail.com",
  "password": "Aa123#!"
}

POST @ /oapi/authorize (verifica se o token é valido)

{
  "token": "<TOKEN>",
}

Recursos autenticados

Estes recursos possuem a camada de autenticação, sendo necessário enviar o token de autorização. Este pode ser enviado através do body, queryParams como token ou através de header como Authorization ou authorization

GET @ /api/ciclos-pagamentos (lista os ciclos de pagamentos)
GET @ /api/ciclos-pagamentos/{id} (recupera o ciclo pelo id)
POST @ /api/ciclos-pagamentos (cria um novo ciclo de pagamento)

{
  "name": "Ciclo 1",
  "month": 1,
  "year": 2018,
  "credits": [
    {"name": "Crédito 1", "value": 1000}
  ],
  "debts": [
    { "name": "Débito 1", "value": 220, "status": "PENDENTE"}
  ]
}

PUT @ /api/ciclos-pagamentos/{id} (altera um ciclo de pagamento pelo id)
DELETE @ /api/ciclos-pagamentos/{id} (exclui um ciclo de pagamento pelo id)
GET @ /api/ciclos-pagamentos/count (contabiliza o total de registros)
GET @ /api/ciclos-pagamentos/summary (exibe um resumo de créditos/débitos cadastrados)

About

O projeto consiste em uma api didática de ciclo de pagamentos utilizando as tecnologias MongoDB, NodeJS, Express e Mongoose


Languages

Language:JavaScript 97.9%Language:Dockerfile 2.1%