API para controle de produtos favoritos dos clientes
Tenha instalado em sua maquina o Git e Node.js 10.0.0 (ou superior). Caso prefira, instale o Yarn.
Você também precisará do mongoDB, mas poderá executá-lo através do Docker no docker-compose.yml
.
-
Fork este repositório e crie um novo branch — ou crie um novo branch caso tenha permissão.
-
Depois de obter sua cópia local, instale suas dependências:
npm install
ou
yarn
-
Inicie o mongoDB — ou execute o Docker Compose:
docker-compose up
Ele executará o mongoDB em sua máquina virtual docker na porta
27017
, mas você pode alterá-la emdocker-compose.yml
. -
Crie um arquivo
.env
no diretório raiz, com as sequintes variaveis:SERVER_PORT=3000 APP_SECRET=tokenSecret DB_URL=mongodb://localhost:27017/customers API_PRODUCTS=http://challenge-api.luizalabs.com
APP_SECRET
pode ser o valor que desejar.
Após a instalação, você podera executar a aplicação em modo de desenvolvimento:
npm run dev
ou
yarn dev
Isso iniciará o servidor em localhost:3000
(se você não alterou a propriedadePORT
em .env
)
Execute:
npm run build
ou
yarn build
Isso irá criar um diretório dist
na raiz, com a aplicacão preparada para ser executada em producão. Execute o comando abaixo dentro do direrório dist
para poder executar a aplicação:
node server.js
Todos os arquivos de teste estão localizados na pasta __tests__
Use o seguinte comando para executar os testes:
npm test
ou
yarn test
Faça o login e forneça o token de autenticação (necessário para acessar as outras APIs):
{
"email": "user@test.com",
"password": "123456"
}
O token retornado deve ser enviado no header Authorization
das próximas API's, da seguinte forma: Bearer <token>
O parametro page
é opcional. Caso ele não seja fornecido, será retornado os registros da página 1`
Obtem todos os clientes
Obtem um cliente pelo ID
Cadastra um novo cliente
{
"name": "André Coelho",
"email": "andrevrcoelho@hotmail.com"
}
Atualiza um cliente
{
"name": "André Coelho",
"email": "andrevrcoelho@hotmail.com"
}
Exclui um cliente
Adiciona um produto favorito para um cliente
{
"productId": "<ID_PRODUTO>"
}
ID de um produto disponivel na API de produtos do Magalu neste link
Obtem a lista de produtos favoritos de um cliente
Exclui um produto da lista de favoritos de um cliente