You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Para inicializar o projeto precisamos do Node.JS instalado na máquina, entre nesse link e baixe a versão LTS referente ao seu sistema operacional.
Quando terminar a instalação, confirme se ocorreu tudo bem abrindo o shell/interpretador do seu computador e digite o comando abaixo, se aparecer a versão que você instalou, então ele já está pronto para ser usado:
node -v
As seguintes dependências são pacotes npm, então precisamos inicilizá-los antes de instalar. Para isso, abra o terminal dentro da pasta do projeto e execute o seguinte:
npm init
Ao executar o comando acima, um formulário JSON no terminal será iniciado e você deverá preenche-lo, mas você pode dar enter em campos que você não souber responder ou executar o comando anterior com -y para ele ser respondido automaticamente.
npm init -y
Nodemon
Com o Node.JS instalado e o npm iniciado, você já pode instalar os pacotes necessários. Primeiro o Nodemon, que é uma ferramenta que reinicia o aplicativo automaticamente quando detecta uma nova mudança nos arquivos do mesmo. Ele será instalado como uma dependência de desenvolvedor:
npm install --save-dev nodemon
Express
O Express é um framework que foi desenvolvido para otimizar a construção de aplicações web e API's. O comando para instalá-lo é o seguinte:
npm install express
SQLite
O SQLite é a biblioteca que será usada para implementar o banco de dados do nosso projeto na linguagem SQL. Seguindo o mesmo padrão de instalação dos pacotes npm, você utiliza este comando no terminal, com o número 3 no final para expecificar a versão:
npm install sqlite3
SuperTest
O SuperTest é basicamente um módulo para forjar requisições com o intuito de testar webservers e verificando o retorno para automatizar os teste de web API's por exemplo. Ele também será instalado como uma dependência de desenvolvedor, então comando será:
npm install --save-dev supertest
Jest
O Jest é um framework para testes unitários de códigos com foco em suporte para grandes aplicativos da web. Será outra dependência de desenvolvedor:
npm install --save-dev jest
Cors
O Cors (Cross-Origin Resource Sharing) é um sistema que consiste de HTTP headers, determinando se os navegadores irão impedir o código de acessar as respostas das requisições que serão feitas. A instalação é feita da seguinte forma, no terminal do projeto:
npm install cors
👩🏻💻 Execução do projeto:
Depois de instalar todas as dependências, você já pode executá-lo e assim o servidor do app já estará rodando:
npm start
node ./src/server.js
Porém, aproveitando que o Nodemon foi instalado, dentro do arquivo package.json existem alguns scripts para executar o servidor, um deles é o dev, ao executar o projeto com ele, a cada nova mudança no arquivo ele vai reiniciar o servidor automaticamente, sem precisar desligar e ligar ele a cada nova alteração:
npm run dev
Outro script que tem no mesmo arquivo é o populate, com a função de popular automaticamente o seu banco de dados a partir do arquivo create-and-insert.js:
npm run populate
Se você optar por rodar este comando, um arquivo db-pub.db será criado fora da src/infra, recomendo passar esse arquivo para dentro dela. Pode ser que no seu Visual Studio Code você tenha problemas ao tentar abrir o novo arquivo por ser do tipo .db, então para facilitar a visualização da tabela recomendo a instalação do DB Browser.
Caso queira experimentar os testes unitários, primeiramente verifique se no arquivo package.json existe o script test e se o seu atributo é jest:
"scripts": {
"test": "jest"
}
Se houver esse script, você já pode utilizá-lo no terminal do projeto:
npm run test
🚄 Rotas do projeto:
Nesse projeto foi utilizado o padrão de API Rest e as rotas consistem em duas partes: um método HTTP e um caminho para um recurso que será usado. Para esse projeto usei os métodos HTTP baseados no acrônimo CRUD, que consiste em:
C - Create
R - Read
U - Update
D - Delete
Create - POST:
O método POST foi projetado para solicitar que o servidor web aceite os dados anexados no corpo da mensagem de requisição para armazenamento.
A partir de uma ferramenta para consulta de requisições (Postman e Insomnia são as mais conhecidas), você pode consultar a API por esse e outros métodos. Nesse caso, a requisição será feita escolhendo o método POST e informando a URL localhost:port/petiscos.
Verifique antes se o seu servidor está rodando, se não, não será possível testar esse e outros métodos. Depois de especificar a requisição, abra o body da mesma e escolha a opção JSON para inserir os dados que você quiser a partir das colunas existentes no banco. Após isso, clique em Send para mandar essa requisição:
Read - GET:
O método GET cria uma sequência de consulta e acrescenta à URL do script no servidor que manipula a solicitação. Esse método é o padrão de todas as URL's e basicamente é para a leitura dos mesmos. Nesse projeto foi criado dois tipo de requisições com GET:
GET/path
Com o servidor rodando e sua ferramenta escolhida aberta, você seleciona o método GET e ao lado a URL para a requisição, sendo ela: localhost:port/petiscos. Ao clicar no botão Send ele retornará todos os dados da API:
GET/path/id
Não muito diferente da requisição acima, o método também será o GET porém depois do caminho será aplicado o ID de um registro, para o caso de precisar verificar algum registro específico. Com o método GET selecionado e a URL digitada, após ela você adiciona /2 por exemplo, para consultar o registro de ID 2:
Update - PUT:
O método PUT cria um novo recurso ou subsititui uma representação do recurso de destino com os novos dados, atualizando o mesmo com as novas informações passadas.
Este não é o único método existente para atualização de dados, além do PUT existe também o PATCH. A diferença dos dois é que o PUT é usado para alteração completa de um dado, já o PATCH é para uma mudança parcial, de algum campo específico
Nesta API foi utilizada somente requisições PUT para atualizações. Não muito diferente da requisição em POST, a única diferença é que ao lado da URL você precisará informar também um ID, para servir de referência a qual dado será modificado:
Delete - DELETE:
Como o nome já entrega, o método DELETE tem a função de remover algum recurso que foi especificado, no caso das nossa requisições ele irá deletar o ID informado após a URL passada:
👩🏻🏫 Considerações finais:
Após a utilização de alguns métodos, se você quer confirmar se a ação deu realmente certo, faça uma requisição GET e veja se o dado foi adcionado, alterado ou deletado.
Confirme se todos os scripts estão aplicados e se as dependências foram instaladas corretamente para uma utilização melhor da API.