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.

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

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:

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!
Comments by Vitor Ricardo