Este projeto foi feito para avaliação de meus conhecimentos sobre NodeJS no curso de Software Development ofertado pela Trybe.
Desenvolvi uma API utilizando a arquitetura MSC (Model-Service-Controller).
A API construída trata-se de um sistema de gerenciamento de vendas, onde é possível criar, visualizar, deletar e atualizar produtos e vendas.
Foi utilizado o banco MongoDB para a gestão de dados. Além disso, a API segue os padrões REST.
1 - Clone este repositório
git clone git@github.com:laurolyra/StoreManager.git
2 - Vá para a pasta do projeto
cd StoreManager
3 - Instale as dependências
npm install
É necessário, também, ter o MongoDB instalado e ativo em sua máquina
4 - Inicie a aplicação
npm run debug
Todos os requisitos abaixo constituem regras de negócio definidas pela escola, as quais não pude alterá-las para uma outra arquitetura ou uso de outra tecnologia.
-
Os verbos HTTP estão adequados para cada operação.
-
As URL em cada recurso estão devidamente agrupadas.
-
Os endpoints sempre retornam uma resposta, havendo sucesso nas operações ou não.
-
A API retorna os códigos de status corretos (recurso criado, erro de validação, autorização, etc).
-
O endpoint é acessível através do caminho (
/products); -
Os produtos enviados são salvos em uma collection do MongoDB;
-
O endpoint recebe a seguinte estrutura:
{
"name": "product_name",
"quantity": "product_quantity"
}-
nameé uma string com mais de 5 caracteres e é único; -
quantityé um número inteiro maior que 0; -
Cada produto tem um id único e gerado no momento em que o recurso for criado. Para tanto, foi utilizado o ID gerado pelo MongoDB.
-
A resposta do endpoint em caso de sucesso é o produto criado.
-
O endpoint é acessível através do caminho (
/products) ou (/products/:id); -
Através do caminho
/products, todos os produtos são retornados; -
Através do caminho
/products/:id, apenas o produto com oidpresente na URL é retornado;
-
O endpoint é acessível através do caminho (
/products/:id); -
Apenas o produto com o
idpresente na URL é deletado;
-
O endpoint é acessível através do caminho (
/products/:id); -
O corpo da requisição segue a mesma estrutura do método responsável por adicionar um produto;
-
Apenas o produto com o
idpresente na URL é atualizado;
-
O endpoint é acessível através do caminho (
/sales); -
As vendas enviadas são salvas em uma
collectiondo MongoDB; -
É possível cadastrar a venda de vários produtos através da uma mesma requisição;
-
O endpoint recebe a seguinte estrutura:
[
{
"productId": "product_id",
"quantity": "product_quantity"
}
...
]-
O
productIdé igual aoidde um produto anteriormente cadastrado; -
quantitydeve ser um número inteiro maior que 0; -
Cada venda tem um id que seja único e gerado no momento em que o recurso for criado;
-
A resposta do endpoint em caso de sucesso é(são) a(s) venda(s) criada(s).
-
O endpoint é acessível através do caminho (
/sales) ou (/sales/:id); -
Através do caminho
/sales, todas as vendas são retornadas; -
Através do caminho
/sales/:id, apenas a venda com oidpresente na URL é retornada;
-
O endpoint é acessível através do caminho (
/sales/:id); -
Apenas a venda com o
idpresente na URL é deletado;
-
O endpoint é acessível através do caminho (
/sales/:id); -
O corpo da requisição recebe a mesma estrutura utilizada para criar uma venda;
-
quantityé um número inteiro maior que 0; -
Apenas a venda com o
idpresente na URL é atualizada;