Dando sequência ao nosso tutorial, vamos agora criar o projeto em NodeJS. Para isso, é necessário que você tenha instalado em sua máquina o Node, clique aqui para baixar.

Nós faremos uso do Visual Studio Code, para instala-lo, clique aqui.

Feito a instalação ou caso já o tenha, vamos começar a configurar e codificar nosso projeto em Node!

1) Crie um repositório para o seu projeto e abra ele no Visual Studio Code. Já dentro do Visual Studio, use o seguinte comando: Ctrl+` (Control + aspas), para abrir um terminal e para que assim consigamos trabalhar com mais facilidade.

This image has an empty alt attribute; its file name is image-9-1024x549.png

2) Agora, crie um projeto NPM com o seguinte comando:

npm init

3) Seguindo, bora adicionar uns pacote NPM, os quais serão:

  • Express: responsável por gerenciar as requisições HTTP;
  • Body-Parser: responsável por validar o corpo das requisições (como o tamanho do JSON recebido, por exemplo);
  • Firebase-Admin: responsável por se conectar e manipular o Firebase;
  • Nodemon: este é um pacote somente para ambiente de desenvolvimento, para que a API do NodeJS seja automaticamente restartado no momento em que um mudança é feita.

No terminal, rode os seguintes comandos abaixo separadamente, para adicionar os pacotes.

npm install express --save
npm install body-parser --save
npm intall firebase-admin --save
npm install nodemon -g
This image has an empty alt attribute; its file name is image-18.png

3) Após ter instalado tudo, vamos criar a estrutura do projeto Node, segue imagem com a mesma criada:

Finamente chegamos ao ponto do tutorial que iremos escrever códigos, estava na hora já!

4) Abra o arquivo index.js, o qual está na raiz do projeto, e adicione o seguinte código:

const express = require('express'),
  bodyParser = require('body-parser'),
  app = express();

//liberamos a permissão para que navegadores consigam acessar a API
app.all('*', (req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'PUT, GET, POST');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  res.header('Access-Control-Allow-Headers', 'Content-type, Accept, Authorization');

  console.log('IP: ', req.connection.remoteAddress);

  next();
});

//definimos o tamanho máximo do json a ser recebido
app.use(
  bodyParser.json({ limit: '1000MB' }),
  bodyParser.urlencoded({ extended: true })
);

//estamos importando as rotas do aplicativo
require('./src/routes')(app);

//definimos a porta que a API irá rodar
app.set('port', 3000);

app.listen(app.get('port'), () => {
  console.log('Server running on port %d', app.get('port'));
});

Este arquivo é o que irá iniciar nossa API NodeJS, note alguns comentários, eles apontam algumas configurações essenciais, como a porta que a API irá rodar. Neste ponto, já podemos rodar nossa API, para isso, execute o comando no terminal:

nodemon index.js

Nesse comando dizemos para o nodemon escutar as modificações em nosso projeto. Note que ele dará erro, mas não se preocupe, isso será solucionado abaixo:

Abra o arquivo src/routes/index.js e adicione:

module.exports = (app) => {
  app.use('/api', require('./movie')());
};

Agora, vá para o arquivo src/routes/movie/index.js e adicione as seguintes rotas:

const router = require('express').Router();

module.exports = () => {

  router.post('/movie/create', require('./create')());

  router.post('/movie/update', require('./update')());

  router.post('/movie/delete', require('./delete')());

  return router;
};

Bora configurar cada rota agora, vamos começar pela de create, para isso acesse o arquivo src/routes/movie/create/index.js e cole o código:

const { createMovie } = require('../../../services/movie');

module.exports = () => (req, res) => {
  createMovie(req.body).then(result => res.status(200).jsonp(result))
    .catch((error) => {
      console.log('\x1b[31m%s\x1b[0m', 'Erro in createMovie:', error);
      res.status(200).jsonp({sucess: false, message: error});
    });
};

Já no arquivo src/routes/movie/update/index.js, adicione:

const { updateMovie } = require('../../../services/movie');

module.exports = () => (req, res) => {
  updateMovie(req.body).then(result => res.status(200).jsonp(result))
    .catch((error) => {
      console.log('\x1b[31m%s\x1b[0m', 'Erro in updateMovie:', error);
      res.status(200).jsonp({sucess: false, message: error});
    });
};

E por fim no src/routes/movie/delete/index.js, cole:

const { deleteMovie } = require('../../../services/movie');

module.exports = () => (req, res) => {
  deleteMovie(req.body).then(result => res.status(200).jsonp(result))
    .catch((error) => {
      console.log('\x1b[31m%s\x1b[0m', 'Erro in deleteMovie:', error);
      res.status(200).jsonp({sucess: false, message: error});
    });
};

Até o momento ainda há erros sendo explodidos em seu terminal, eles terminarão com o código abaixo, abra o arquivo src/services/movie/index.js e adicione:

exports.createMovie = async () => {
  return {sucess: true, message: 'createMovie' };
};
exports.updateMovie = async () => {
  return {sucess: true, message: 'updateMovie' };
};
exports.deleteMovie = async () => {
  return {sucess: true, message: 'deleteMovie' };
};

Feito, teu projeto NodeJS está configura e pronto para uso. Quer testar? Abra o Postman e faça uma requisição do tipo HTTP Post para a rota de criar filmes, veja exemplo:

This image has an empty alt attribute; its file name is image-13.png

Até o momento é isso, na parte 3 iremos configurar as rotas para se comunicar com o projeto do firebase, passa lá para dar continuidade ao tutorial!