Como construir a sua primeira rota no backend
11
1

Como construir a sua primeira rota no backend

Quando estamos desenvolvendo alguma aplicação, as vezes precisamos desenvolver soluções que outras pessoas já tiveram que desenvolver. E não queremos refazer a roda, até porque ela já existe e já foi validada anos e anos. Então com isso pegam...

Douglas Machado
6 min
11
1

O que é NPM? Do que vive? Pra que serve? Onde habita?

Email image

Quando estamos desenvolvendo alguma aplicação, as vezes precisamos desenvolver soluções que outras pessoas já tiveram que desenvolver. E não queremos refazer a roda, até porque ela já existe e já foi validada anos e anos. Então com isso pegamos a roda que já existe e fazemos algumas adaptações para que ela cumpra o seu dever na nossa aplicação. O NPM funciona de forma parecida, ele é um gerenciador de pacotes de soluções gerais que pode ser utilizado para uma infinidade de aplicações, daí utilizamos uma solução já validada para resolver nossos problemas. Claro que o NPM é muito mais que isso, mas a principal função dele é essa.

Caso você já tinha instalado o Node, o npm já está incluso. Para checar se ele realmente está instalado acesse o seu terminal e digite:

npm -v

Deverá aparecer algo como:

Resposta do npm -v
Resposta do npm -v

O que é o ExpressJS? O mais queridinho da galera do NodeJS

Email image

Antes de explicar o ExpressJS, preciso dar uma palavrinha sobre o que é um framework, claro que a definição de framework que eu vou dar aqui é muito mais complexa, teórica do que eu vou falar, mas eu gosto de prática. Então pense no seguinte, framework é nada mais nada menos que um pacote um pouco mais turbinado. Mas o que quer dizer esse turbinado? Então, existem pacotes que lidam com coisas mais simples e isoladas como; validar cpf/cnpj, e outras que são um apanhado de soluções para um determinado problema. O ExpressJS por exemplo é um framework que visa resolver e abstrair várias soluções para aplicações web, e assim facilitando nosso desenvolvimento.

Antes de instalar o ExpressJS no nosso projeto, precisamos iniciar ele. Então crie uma pasta do seu projeto e digite:

npm init

Com isso foi criado o arquivo: package.json, e vamos entender o que ele representa. Falando bem por cima ele é o arquivo que indica para o NPM os pacotes instalados naquele projeto.

Então já com o npm iniciado, vamos para o próximo passo. Que é instalar o pacote do ExpressJS, nosso framework. Para instalar qualquer pacote no npm, devemos utilizar o comando npm install seguido do nome do pacote. Como no comando abaixo para instalação do Express.

npm install express

Com isso foram gerado 1 arquivo novo, package-lock.json que não vamos ver por agora, 1 pasta que é o node_modules onde nosso pacote se encontra, e se vocês abrirem o package.json vão ver que foi criado uma nova dependência, que deixa explicito para o npm que nosso projeto precisa do pacote express para funcionar corretamente.

É comum e correto em projetos nodeJS, não enviamos a pasta node_modules para o git, pois todo mundo ao baixar um projeto deveria dar um npm install para que possa ser instalado as dependências daquele projeto. Então para não enviar esse node_modules para o git, devemos criar um arquivo chamada .gitignore na pasta do nosso projeto com o seguinte conteúdo:

Email image

Com isso vamos iniciar nossa primeira rotinha, então vamos copiar e colar o seguinte código em um arquivo chamado index.js.

const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})

E para executamos esse código necessitamos de executar o código no terminal, node seguido do nome do arquivo. Ficando como no exemplo abaixo:

node index.js

Com isso podemos abrir o Postman, e testar nossa rota GET /.

Test postman
Test postman

Toda vez que tiver alguma alteração você precisa ir no terminal, derrubar o código e subir uma nova versão. Mas será que vai ser sempre assim? DEUS ME FREE. Vamos para o próximo capitulo.

Nodemon

O nodemon veio justamente para resolver esse problema de a cada modificação ter que subir uma nova versão do código no terminal. O que ele faz é ficar escutando sua aplicação e a cada modificação ele sobe um código novo de forma automática. 

Mas a diferença é que nodemon precisamos instalar como pacote global, ou seja de uso de sistema operacional. Para fazer isso utilizamos o argumento -g na hora do npm install. Como no comando a abaixo:

npm install -g nodemon

Agora para executar nossa aplicação trocamos node por nodemon, como abaixo:

nodemon index.js

Feito, agora podemos trabalhar mais tranquilo.

Vamos trabalhar com as rotas do ExpressJS agora?

Douglinhas, na aula passada disse um pouco sobre GET, POST, PUT, DELETE. Agora vamos entender como o Express define essa rotas, que é muito simples. É app + seguindo de qual método queremos utilizar + path da rota + uma função callback, não se apegue a esses termos agora. Vamos ver isso na prática e esse conceitos vão ficando mais claros com o tempo.

Por exemplo, se queremos uma rota chamada GET /curso que retorne uma string escrita: "Essa é a rota do curso". Faremos o seguinte:

app.get("/curso", (req, res) => {
res.send("Essa é a rota do curso!");
});

Mas e se eu quiser pegar informações de qual curso é? Simples utilizamos params do próprio express. Ele é definido por dois pontos (:) e seguido do nome do parâmetro. E pra acessar utilizamos req + params + nome do parâmetro.

Como por exemplo:

app.get("/curso/:nomeDoCurso", (req, res) => {
res.send(`Essa é a rota do curso ${req.params.nomeDoCurso}`);
});

E pode acontecer de as vezes a gente precisar passar alguns parâmetros opcionais, com isso utilizamos as Query Params. O conceito é parecido, mas ela não fica implícita no path, e sim na hora da chamada. Ela é representada de ?nomeDaVariavel=valorDaVariavel no final da URL. E é acessado por req.query.

app.get("/curso/:nomeDoCurso", (req, res) => {
res.send(`Essa é a rota do curso ${req.params.nomeDoCurso} e página ${req.query.page}`);
});

Baaah, tchê. Parece a mesma coisa na declaração, né? Correto! Mas na hora de chamar é diferente. Repare no ?page=1 ali no final da url do Postman.

Email image

Já passamos pelo params, query params e agora vamos pro último os principais. O Body, mas não existe BODY no GET. Na verdade até tem como, mas não é boa prática. Só que antes de iniciamos com o body, temos que instalar um novo pacote chamado body-parser . Não vou entrar nos detalhes do pacote, mas ele é necessário para converter o body. Para instalar digite:

npm install body-parser

E para iniciar ele no nosso projeto devemos fazer o seguinte, novamente peço que não se apegue ao app.use, pois futuramente devemos entrar mais afundo em middleware e etc.

const bodyParser = require("body-parser");
app.use(bodyParser.json());

Agora vamos supor que queremos cadastrar um novo usuário, e para isso precisamos receber a informação do usuário. Então passaremos, nome, idade e e-mail pelo body. O código ficaria dessa forma:

app.post("/usuario", (req, res) => {
const nome = req.body.nome;
const idade = req.body.idade;
const email = req.body.email;
res.send(`O usuário ${nome} tem ${idade} anos e seu email é ${email}`);
});

E o Postman fica algo parecido com isso:

Email image

Chegamos ao final dessa aula com muita informação, hehehehe. Desculpa pessoa!

Vamos a um pequeno desafio:

Quero uma rota POST que receba informações de um usuário como, nome, idade. E verifique se ele é maior de 18 anos, se for retorna "[Nome do usuário] está liberado", se for menor retorne "[Nome do usuário] está negado".