O projeto consiste em uma api didática de ciclo de pagamentos utilizando as tecnologias MongoDB, NodeJS, Express e Mongoose containerizado com Docker.
"AUTH_SECRET"
: pode ser utilizada para definir a chave secreta utilizada pelo jsonwebtoken
;
docker-compose up
ou docker-compose -f docker-compose.dev.yml up
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.
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
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>",
}
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)