Node.js — Do zero ao deploy
Parte 1 — Primeiros passos
Recentemente eu e o Rodrigo Botti tivemos o prazer de dar um workshop sobre Node.js no evento Rocketseat Experience 2019. Foi uma experiência muito rica e conseguimos conhecer muita gente que está começando com Node e tem muita vontade de aprender! Nesta série de artigos, vamos fazer um passo a passo do que foi apresentado lá, construindo uma API, desde a criação do projeto até termos um CRUD deployado e funcionando na nuvem.
Antes de tudo…
Para acompanhar este artigo, assumimos que você está familiarizado com Javascript e Git. Além disso temos alguns pré-requisitos:
- Node.js instalado — recomendo usar o nvm para fazer a instalação da versão 12 (lts/erbium)
- Git instalado e configurado na sua máquina
- Nós sugerimos fortemente o uso do Visual Studio Code
Nós temos um repositório no qual você pode acompanhar o desenvolvimento do projeto como um todo. Se preferir pode começar fazendo uma cópia dele (nós vamos partir da master). Ao final deste artigo, estaremos com o código igual ao da branch step-1.
Primeiros passos
Primeiramente, crie uma pasta vazia para o projeto no caminho que achar mais adequado.
Os primeiros passos para começarmos nosso projeto são abrir o terminal, navegar até a pasta do projeto e executar o seguinte comando:
npm init -y
Este comando vai configurar um projeto node — criar um arquivo package.json — para você com todos os valores default (você pode tirar o -y e mudar algumas informações se desejar).
O próximo passo é criar um arquivo index.js, é nele que vamos começar a colocar o nosso código!
Nossas primeiras rotas
Talvez você já tenha ouvido falar sobre o express, que é o framework mais famoso do Node para construção de aplicações web, porém, na nossa jornada, vamos utilizar o Koa, que faz o mesmo papel do express, — servidor http — mas que é muito mais enxuto.
Dito isso, vamos instalar o koa (o save adicionará o pacote como dependência ao nosso package.json automaticamente):
npm install koa --save
Como eu disse, o koa é muito enxuto, não tendo dentro dele um router que funciona de forma intuitiva como o express, portanto temos que instalar também o koa-router:
npm install koa-router --save
Observação: router é o objeto no qual nós registramos as rotas — método, path, parâmetros — que queremos responder com nossas funções de handlers/controllers — recebem requests http e geram http responses.
Com todas as bibliotecas que precisamos para o nosso “Hello World” instaladas, vamos para o código.
Primeiro importamos as bibliotecas que vamos usar:
Em seguida, inicializamos e atribuímos a variáveis:
Vamos agora criar a nossa primeira rota, no “/”:
Observação: diferentemente do express, no koa, os handlers recebem somente um parâmetro chamado de Context. Ele é um objeto que agrupa tanto a request quanto a response — no express um handler recebe-los em parâmetros separados — podemos acessar o objeto de request através de ctx.request e a response através de ctx.response — para facilitar, o context tem alguns aliases para ajudar a escrever menos, por exemplo ctx.body === ctx.response.body.
Note que ainda não falamos para o koa que ele precisa usar o koa-router, então, após “setarmos” as rotas, associamos o router ao koa, e por fim, inicializamos o koa escutando na porta 3000:
Agora podemos rodar a nossa aplicação! Para tal, usamos o seguinte comando no terminal:
node index.js
Se tudo deu certo, você deverá ver a mensagem no terminal
Listening on port 3000
Pronto, agora você pode ir até o seu navegador e acessar http://localhost:3000, e para nossa alegria, a mensagem definida na rota aparecerá na tela!
Antes de finalizarmos a primeira parte, vamos adicionar mais duas rotas:
Note que agora recebemos o “name” na rota (os “:” antes do name indica que ele é um parâmetro variável) e como vamos reaproveitar a lógica extraímos uma função chamada hello.
Por último, para não deixarmos um número mágico na inicialização do koa, vamos extrair o valor que chumbamos como 3000 para uma variável de ambiente (isso também vai ser útil quando formos utilizar o Heroku):
Agora é só rodar e testar os seus novos endpoints! Experimente trocar o valor de :name por alguma outra palavra e veja ela vindo na resposta da sua requisição. Por exemplo: http://localhost:3000/hello/rodrigo.
No próximo artigo, veremos como fazer o deploy da nossa API de forma gratuita usando uma ferramenta chamada Heroku, deixando-a assim disponível para ser acessada de qualquer lugar. Para acessar, clique aqui.