Como criar uma API REST com NodeJS parte 01 – Instalações, estrutura de projeto e ambiente de desenvolvimento
Oi, tudo bem? No post anterior eu fiz um grande texto sobre tudo que você precisa saber a respeito de API REST. Então se você ainda não sabe muito bem do que se trata, sugiro começar por lá que você vai sair 100% capacitado sobre APIs, beleza?
Bem como eu não gosto de fazer as coisas de qualquer jeito eu vou separar esse assunto em 4 artigos 5 artigos diferentes, desde a instalação de cada coisa pra conseguir trabalhar, até colocar uma api no ar propriamente dita na hospedagem Heroku. Aqui vai o índice dos artigos se você quer pular essa parte inicial
- Parte 02: Construindo as rotas, requisições e verbos
- Parte 03: Conexão com o Banco de dados (Em construção)
- Parte 04: Middlewares e validações (Em construção)
- Parte 05: Deploy em produção (Em construção)
** Como você pode perceber, os artigos ainda estão sendo construídos, então nos siga no Instagram para que você saiba assim que o artigo ficar disponível.
E agora aqui vai um pequeno índice para que possamos nos organizar aqui dentro deste artigo:
- Instalações necessárias
- Inicialização e estrutura de projeto
- Configurando o ambiente de desenvolvimento
Instalações necessárias
Bem para iniciarmos a criação de uma API REST com NodeJS, nós precisamos instalar o Node é claro! Vou partir do pressuposto aqui que você já sabe o que é node ok? Mas em termos gerais, é um motor que executa Javascript no back-end(ou quase isso).
Na parte 03 desta sequencia de artigos eu também vou ensinar você a trabalhar com o banco de dados não relacional MongoDB, então vamos instalar ele também tudo bem? Então vamos lá
Instalando o NodeJS
Existem algumas formas diferentes de instalar o NodeJS, mas eu particularmente gosto de utilizar o NVM, que significa Node Version Manager. Isto é, um gerenciador para que você possa utilizar diversas versões do NodeJS, de acordo com o projeto que você vai trabalhar. Então vamos iniciar instalando o NVM.
Neste artigo eu vou ensinar a instalar no sistema operacional Windows, mas caso você queira, deixe nos comentários que eu posso também adicionar a instalação em outros sistemas como no Linux ou no MAC
- Entre neste site e baixe a versão nvm-setup.zip
- Execute o nvm-setup.exe
- Siga os passos de instalação normalmente como qualquer outro software
Pronto, seguindo esses três passos nós teremos o gerenciador de versões do NodeJS instalado na nossa máquina. Legal, agora vamos para a instalação do Node, propriamente dita
- Pressione a tecla Windows + R
- Escreva CMD e pressione Enter
- Escreva no seu terminal nvm install –lts. Este comando serve para instalar a versão LTS do Node, que é a versão mais estável.
- Escreva no seu terminal nvm use –lts. Para utilizar a versão que acabamos de instalar
- Para finalizar e testar se seu node foi instalado com sucesso, escreva no terminal node -v e se ele retornar a versão do node instalado, pronto, está tudo correndo bem!
Legal agora temos o NodeJS instalado! Está quase tudo pronto para começarmos a programar…
Instalando o MongoDB
A instalação do MongoDB é um pouco mais simples do que a do Node, Então vamos lá:
- Entre neste site e baixe a versão para o seu sistema operacional
- Execute o arquivo .msi
- Siga os passos de instalação normalmente como qualquer outro software
- Abra o seu Terminal com permissão de administrador
- Escreva no terminal net start MongoDB para iniciar o serviço do mongo localmente
- Para testar se está funcionando e finalizar, vá no chrome(ou qualquer browser) e acesse localhost:27017. Se você receber a seguinte mensagem “It looks like you are trying to access MongoDB over HTTP on the native driver port.” quer dizer que deu tudo certo e seu Mongo já está rodando corretamente.
Bem, em termos de instalação acho que terminamos. Vamos aos próximos passos
Inicialização e estrutura de projeto
Para começar um projeto, vamos do começo! Crie uma pasta com o nome de TutorialNode que é onde ficará o seu projeto.
Assim que criar a pasta, você deve abrir o terminal nesta pasta(para isso, utilize Shift + Botão direito e selecione para abrir o seu terminal). Após ter aberto, escreva no seu terminal:
npm init
Em seguida, pode dar Enter em todas as perguntas que ele fizer, pois nessa parte temos apenas definições de projeto. Vai ser algo mais ou menos como na imagem abaixo
Legal, agora nosso projeto tem um arquivo de configuração do node, onde todas as dependências vão ficar declaradas para sempre que precisarmos rodar. E vamos começar a criar os arquivos e pastas necessárias para trabalhar.
Próximo arquivo que vamos criar vai ser o .gitignore e dentro dele vamos escrever node_modules/ ele vai ficar mais ou menos como na imagem abaixo:
Sempre criamos este arquivo por boas práticas. Quando utilizamos NodeJS, as dependências ficam numa pasta chamada node_modules, e essa pasta fica extremamente grande quando terminamos o projeto, e para não precisar ficar subindo uma pasta desnecessária no repositório do seu projeto.
Beleza, agora para que tudo não fique perdido, vamos criar a estrutura interna de pastas e arquivos para que cada coisa fique no seu lugar. A estrutura deve ficar mais ou menos da seguinte forma
- src/
-- controllers
-- handlers
-- database
--- models
--- connect.js
-- index.js
Ou como a imagem abaixo:
Agora explicando um pouquinho de cada uma das pastas e o que ficará nelas.
- src/ – Todo código propriamente dito vai ficar dentro dessa pasta. Fora dela apenas arquivos de configuração a respeito do projeto
- src/controllers/ – Será a pasta dos nossos controladores de cada um de nossos objetos, onde ficará toda a parte da lógica
- src/handlers/ – Os handlers serão os arquivos de cada uma das rotas. Geralmente o pessoal gosta de deixar direto nos controllers, mas eu acho que separado fica mais interessante caso você precise utilizar dois controllers na mesma rota, por exemplo
- src/database/ – Todos os arquivos relacionados a comunicação com o banco de dados ficará nesta pasta
- src/database/models – Aqui ficarão os modelos das coleções que usaremos no banco
- src/database/connect.js – Neste arquivo teremos a logica de conexão com o banco
- src/index.js – Aqui será o nosso arquivo inicial, e o qual chamaremos ao inciar nosso servidor.
Legal, é isso, estrutura criada e iniciada, agora podemos começar a desenvolver, certo? CALMA CARA! Mas a próxima etapa é tranquila, eu prometo. Vamos a ela…
Ambiente de desenvolvimento
Para configurar o ambiente de desenvolvimento nós instalaremos três extensões que eu considero indispensável para um projeto, que é o Nodemon, o Cross-env e também o Dotenv-flow
Então para isso, abra o seu terminal na pasta raiz do seu projeto e escreva os seguintes comandos para instalar as dependências:
npm install --save-dev nodemon cross-env
npm install dotenv-flow --save
Legal, tudo instalado, agora na raiz do seu projeto, crie um arquivo chamado .env.development, ainda vazio e em seguida, abra o arquivo package.json e adicione a seguinte linha no nó de scripts
"dev": "cross-env NODE_ENV=development nodemon src/index.js"
Explicando o que significa o código acima:
- A primeira parte “dev” é o nome do comando que você vai rodar para iniciar o seu servidor da API. Normalmente colocamos dev para identificar que se trata de uma execução em ambiente de desenvolvimento.
- cross-env NODE_ENV=development. Nesta parte a gente diz especificamente para a nossa aplicação que utilizaremos configurações de desenvolvimento para rodar a aplicação através do arquivo .env.development– Já explico para que serve este arquivo
- E a última parte nodemon src/index.js, é para de fato rodar a aplicação. Você pode se perguntar porque não rodamos assim node src/index.js, mas é porque quando estamos desenvolvendo, é comum que a gente mexa nos arquivos e o nodemon facilita isso para nós reiniciando o servidor cada vez que a gente mexe em algum arquivo.
Bem, e pra que a gente criou o .env.development? É pelo seguinte motivo, quando estamos projetando uma aplicação é comum que tenhamos que colocar variáveis de configuração, como por exemplo o Token de algum serviço, as credenciais de algum e-mail etc. E em desenvolvimento nós utilizamos credenciais diferentes das credenciais de produção, então no futuro, teremos um outro arquivo chamado .env.production para colocar tudo que seja de produção. Mas isso é um pouco complexo e eu posso explicar melhor mais pra frente.
Ficará mais ou menos como na imagem abaixo
Perfeito, agora configuramos nosso ambiente, tudo criado e lindo como deve ser! Podemos de fato começar a desenvolver. Mas isso vai ficar para o próximo artigo:
Espero que este post tenha te proporcionado algum conhecimento a mais, se tiver dúvidas deixe nos comentários… Até a próxima, e tchau! 😉