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 oid
presente na URL é retornado;
-
O endpoint é acessível através do caminho (
/products/:id
); -
Apenas o produto com o
id
presente 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
id
presente na URL é atualizado;
-
O endpoint é acessível através do caminho (
/sales
); -
As vendas enviadas são salvas em uma
collection
do 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 aoid
de um produto anteriormente cadastrado; -
quantity
deve 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 oid
presente na URL é retornada;
-
O endpoint é acessível através do caminho (
/sales/:id
); -
Apenas a venda com o
id
presente 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
id
presente na URL é atualizada;