Por meio deste serviço, os clientes Magazine Luiza conseguirão adicionar os produtos favoritos em uma lista.
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Node.js. Além disto é bom ter um editor para trabalhar com o código como VSCode
As seguintes ferramentas foram usadas na construção do projeto:
# Clone este repositório
$ git clone https://github.com/gabrielhsantos/productListAPI.git
# Acesse a pasta do projeto no terminal/cmd
$ cd productListAPI
# Instale as dependências
$ npm install
Na raiz do projeto, existe o arquivo env-example.txt, nele contém as variáveis que serão utilizadas no projeto, copie seu conteúdo.
Crie um arquivo também na raiz, com nome .env e cole as variáveis dentro.
O preenchimento dessas variáveis são obrigatórias, então segue um exemplo de uso:
VARIÁVEL | VALOR |
---|---|
API_PORT | 3001 |
DB_PORT | 5432 |
DB_USER | postgres |
DB_DIALECT | postgres |
DB_TIMEZONE | UTC |
DB_LOGGING | false |
DB_SCHEMA | public |
DB | client_list |
DB_HOST | localhost |
DB_PASSWORD | postgres |
LUIZA_LABS_URL | http://challenge-api.luizalabs.com/api |
JWT_SECRET | #LuizaLabsChallenge@GabrielSantos |
SWAGGER_HOST | localhost:3001/api |
SWAGGER_SERVER | http://localhost:3001/api |
Observação: Os endpoints precisam do header Authorization e para facilitar a criação desse header, pode-se utilizar do site jwt.io inserindo o mesmo JWT_SECRET definido a cima e com o seguinte payload:
{
"sub": "avaliadorLuizaLabs",
"iat": 1516239022
}
# Crie o banco de dados luizaLabs
$ npm run db:create
# Execute as migrations
$ npm run db:migrate
# Execute a aplicação
$ npm start
# O servidor inciará na porta:3001 - acesse <http://localhost:3001> (ou a porta que foi definida no arquivo .env)
Para rodar os testes, basta utilizar este comando via terminal/cmd:
$ npm test
Observação: O Coverage não está em 100%, pois os testes foram feitos apenas em cima da integração com o endpoint do próprio desafio: LuizaLabsChallenge
Um arquivo com extensão .json se encontra na pasta:
src/config/docs
.
O mesmo pode ser importado dentro do Postman, para facilitar o acesso aos endpoints.
Também é possível acessar a documentação da api pelo endpoint /doc com o servidor rodando.