O código para essa demo veio deste exercício que está no módulo de Real Life Engineering. Foi adicionado o linter de back-end e as devidas correções de lint;
1️⃣ Instale as dependências
npm install
2️⃣ Vc pode rodar o projeto de duas formas:
- 1️⃣ Rodando com o nodemon (recomendado)
Com o nodemon, vc não precisa ficar reiniciando o servidor a cada alteração no código.
npm run dev
- 2️⃣ Rodando com o node
npm start
3️⃣ Acesse a API em http://localhost:3000
Para rodar o linter, execute o comando:
npm run lint
Para corrigir os erros de lint, execute o comando:
npm run lint:fix
Para rodar os testes, execute o comando:
npm test
Você também pode executar o projeto usando o Docker. Certifique-se de ter o Docker instalado no seu sistema.
O projeto já possui um Dockerfile configurado para facilitar a criação da imagem Docker. Você pode personalizar o Dockerfile de acordo com suas necessidades.
1️⃣ Execute o script de setup para criar e configurar o contêiner Docker:
./docker-setup.sh
2️⃣ Use os comandos Docker para gerenciar o contêiner:
./docker-commands.sh
O script docker-commands.sh
exibe um menu com as seguintes opções:
- Ligar a API
- Desligar a API
- Executar os testes
- Executar o linter
Selecione a opção desejada digitando o número correspondente.
Essa API precisa de um token que case com a regex definida no middleware, vamos usar um genérico para os exemplos. Os dados estão em variáveis de ambiente para facilitar a execução dos comandos.
TOKEN=12345678abcdefgh; curl -X GET -H "Authorization: $TOKEN" http://localhost:3000/products
C
reate
TOKEN=12345678abcdefgh; curl -X POST -H "Authorization: $TOKEN" -H 'Content-Type: application/json' -d '{"name":"Elmo on fire","brand":"Xablau"}' http://localhost:3000/product
R
ead
ID=100; TOKEN=12345678abcdefgh; curl -X GET -H "Authorization: $TOKEN" "http://localhost:3000/product/$ID"
U
pdate
ID=100; NAME="novo nome"; BRAND="nova marca"; TOKEN=12345678abcdefgh; curl -X PUT -H "Authorization: $TOKEN" -H 'Content-Type: application/json' -d '{"name":"'"$NAME"'","brand":"'"$BRAND"'"}' "http://localhost:3000/product/$ID"
D
elete
ID=100; TOKEN=12345678abcdefgh; curl -X DELETE -H "Authorization: $TOKEN" "http://localhost:3000/product/$ID"