Sua Primeira API NodeJS
Introdução
Primeiramente, para conseguirmos criar nossa primeira aplicação node, é necessário que configuremos o ambiente do mesmo. Para isso, meu ultimo artigo cai como uma luva, podendo ser acessado ao clicar aqui.
Criando o projeto
Para iniciar, precisamos acessar o diretório aonde criaremos a aplicação através de uma ferramenta de terminal/prompt de comando. Ao acessar o diretório, utilizaremos o comando:
npm init -y
Será criado então o nosso package.json, aonde serão incluídas as futuras dependências, assim como os scripts que iniciaram a nossa aplicação.
Para fins educacionais, criaremos uma aplicação bem simples, sem uma estrutura de projetos bem definida, sendo assim, criaremos o arquivo inicial, o index.js.
Após isso, utilizando o editor de texto de sua preferencia, abra o index.js. No meu caso, utilizarei o VSCode. Com o arquivo aberto, instalaremos algumas dependências para o projeto. A primeira delas, e uma das mais importantes, será o express.
Dependências interessantes…
Tal dependência é a base da nossa aplicação, sendo ela responsável por disponibilizar e transformar nossa aplicação de um arquivo javascript normal em uma aplicação “servidor”.
Para instala-la, basta utilizar o comando:
npm install --save express
Após finalizar a instalação, já iremos aproveitar para instalar o nodemon, essa dependência será responsável por fazer com que nossa aplicação fique executando ininterruptamente , facilitando nosso desenvolvimento, pois ira servir como um hot reload, no caso, sempre recarregando a aplicação após os arquivos do sistema forem modificados. Para instala-lo, execute esse comando:
npm install --save nodemon
Para facilitar a execução do nodemon, iremos fazer uma pequena alteração no nosso package.json.
Ao abri-lo, observe que as dependências previamente instaladas, agora se encontram aqui, e também uma nova pasta surgiu, a node_modules, essa pasta é aonde todas as dependências ficam centralizadas.
Obs: Aconselho que não modifiquem nada que está presente nessa pasta. Obs2: Caso seja necessário mover o projeto para outro local podemos excluir a pasta node_modules para reduzir o tamanho do projeto. Ao fazer isso, será necessário então executar o comando npm install no diretório do projeto.
Com isso, todas as dependências previamente adicionadas no package.json através da diretiva — save serão novamente instaladas, fazendo com que nosso projeto seja novamente utilizável.
De volta ao projeto
Voltando para o projeto, porém ainda falando sobre o arquivo package.json, podemos ver que no mesmo foi criado alguns novos campos:
Como é possível reparar, foi criada uma nova chave no objeto, chamada “dependencies”, no caso, representando todas as dependências adicionadas no projeto atualmente, é através disso que é possível configurar de forma rápida nossa aplicação caso precisemos transferir para outro local.
Agora iremos adicionar um novo atributo ao objeto scripts. A chave desse atributo será dev, e o valor “nodemon run index.js”:
Deixando o arquivo da seguinte forma:
{ "name": "first-application", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "nodemon index.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "express": "^4.17.1", "nodemon": "^2.0.2" }}
Através dessa mudança, podemos executar o projeto com o comando
npm run dev
Porém, antes disso, iremos incrementar alguns pontos. Voltando ao index.js, será necessário importarmos o módulo do express para nossa aplicação da seguinte forma:
const express = require('express');
Com o express instanciado , agora faremos com que ele escute uma porta, utilizando o seguinte código.
const express = require('express');const app = express();app.listen(3333);
Nesse momento, nossa aplicação consegue ser executado através do comando dito anteriormente. Executemos-o no terminal então:
npm run dev
Agora como podemos ver no terminal, nossa aplicação está sendo executada com exito.
Para fins de aprendizado, tente remover quaisquer “;” do código e salve-o. Percebera então que o nodemon recarregara nossa aplicação, com as mudanças realizadas,
Outro ponto positivo disso é que, caso cometermos quaisquer erros, os mesmos serão exibidos aqui no terminal.
Criando nossa API
Iremos implementar um api do tipo GET, aonde obteremos o retorno “Hello World”
Para isso, utilizaremos o método get, obtido módulo express. Esse método, recebe como parâmetro 2 itens, primeiramente qual sera a url que será requisitada, da seguinte forma:
app.get('/', (req, res) => { })
Sobre o primeiro parâmetro
O primeiro parâmetro remete ao conceito de rota, muito utilizado pela aplicação node, porém, não irei abordar profundamente nesse artigo. Em uma rápida explicação, é basicamente a url que nós iremos acessar para obtermos a reposta da nossa requisição.
No caso, no momento em que definimos o primeiro parâmetro como “ / ”, significa que, ao acessar a nossa aplicação em sua URL raiz, será feita uma requisição para esse caminho.
E o segundo parâmetro?
Agora, a função que criaremos aqui recebe 2 parâmetros, req e res. Referenciando, respectivamente, request e response.
O request é basicamente um objeto aonde estará contida todas as informações que o requisitante enviou a nossa aplicação. Como por exemplo os headers, parâmetros, navegador, etc.
Já o response será responsável pelo que será respondido ao usuário, é através dele então que enviaremos a resposta ao usuário.
Voltando para a API
Como padrão, a melhor forma de respondermos através de uma aplicação node é em forma de JSON. Para isso utilizaremos um novo método do express, sendo ele o “use”, responsável por dizer a nossa aplicação quais recursos a mesma poderá usufruir em tempo de execução.
No caso, faremos o seguinte:
app.use(express.json());
Basicamente isso quer dizer que agora nossa aplicação será compatível com retorno de objetos JSON, podendo assim, responder ao usuário com objetos JSON, como veremos a seguir.
Agora editando o que construímos anteriormente, adicionaremos dentro da nossa requisição get o seguinte código.
app.get('/', (req, res) => { return res.json({ message: 'Hello World' });
})
Basicamente o que estamos fazendo ai é, ao usuário realizar uma requisição a raiz da nossa aplicação, retornaremos a ele um objeto JSON contento uma mensagem Hello World, como podemos ver ao realizar o teste a seguir…
Testando a API
Nisso a implementação foi realizada, agora vamos testar, caso deseje, é possível utilizar softwares como o Insomnia ou o Postman para realizá-lo, porém, por se tratar de um teste em uma requisição GET, podemos testar diretamente do navegador, porém, em um futuro artigo implementaremos também outros métodos http, esses sim serão obrigatoriamente necessária a utilização de um software de requisições, conforme citados a cima. Assegurando que a aplicação esta em execução, acesse a url localhost:<portaDefinida> no caso:
http://localhost:3333
Concluindo…
Como é possível ver, criar uma aplicação backend em node não é um bicho de sete cabeças, claro que o mesmo oferece diversas outras ferramentas muito interessantes, que nos auxiliam em tarefas, como por exemplo abstraindo a utilização do banco de dados, ou até facilitando todo o processo de autenticação com serviços diversos. Abordarei tais assuntos em artigos futuros.
O código final ficou basicamente dessa forma:
const express = require('express');const app = express();
app.use(express.json());app.get('/', (req, res) => { return res.json({ message: 'Hello World' });})app.listen(3333);
Obrigado por lerem meu artigo, quaisquer sugestões, por favor, entrem em contato.