Front End

12 out, 2017

Criando uma API Node em 10 passos com Express.js

Publicidade

Para quem não conhece o Express.js, ele é um excelente framework do Node.js que nos auxilia na construção das nossas aplicações Web. Ele é um framework muito simples de ser utilizado, por isso vem sendo adotado pelos desenvolvedores de todos os níveis. Para que possamos conhecê-lo um pouco mais, vejamos 10 passos a baixo para criação de um Web Site.

1. Instalação

Para esse artigo, não iremos abordar a instalação do Node.js. Iremos partir de uma máquina com ele já instalado e configurado. Crie um novo diretório no seu computador e crie uma nova pasta – nós iremos utilizar node-express, mas você pode escolher um outro nome de sua preferência. Feito isso, execute o comando abaixo para baixar o nosso modulo.

npm install express

2. Configuração

Agora, nós precisamos criar o nosso arquivo package.json. Esse é o arquivo de ponto de partido dos nossos projetos Node. Para isso, execute o comando a baixo. Ele irá criar o nosso arquivo com a referencia do module express.

npm init -y

3. Estrutura do nosso projeto

Crie uma estrutura de pastas e arquivos conforme está na imagem a baixo:

4. Criando arquivo de Server

Vamos, agora, criar o arquivo de inicialização do nosso projeto. Para quem vem do mundo PHP, seria o nosso index.php ou HomeController.cs no MVC do .NET. Para isso, abra o seu arquivo server.js e cole o código a baixo nele:

const app = require('../src/app');
const port = normalizaPort(process.env.PORT || '3000');
function normalizaPort(val) {
    const port = parseInt(val, 10);
    if (isNaN(port)) {
        return val;
    }
if (port >= 0) {
        return port;
    }
return false;
}
app.listen(port, function () {
    console.log(`app listening on port ${port}`)
})

No código a cima, nós estamos importando um módulo que iremos criar nos próximos passos. Depois, estamos definindo uma porta para que ele seja executado, no final estamos passando para o método app.listen a porta que queremos que ele escute o nosso projeto e de um console.log com ela.

5. Controller

Para que possamos organizar o nosso código, nós dividimos ele pensando em um padrão MVC. No código abaixo, nós temos as nossas Actions das nossas Controllers.

exports.post = (req, res, next) => {
    res.status(201).send('Requisição recebida com sucesso!');
};
exports.put = (req, res, next) => {
    let id = req.params.id;
    res.status(201).send(`Requisição recebida com sucesso! ${id}`);
};
exports.delete = (req, res, next) => {
    let id = req.params.id;
    res.status(200).send(`Requisição recebida com sucesso! ${id}`);
};

6. Rotas

Agora, vamos criar as nossas rotas. Nessa parte, nós temos dois arquivos: index.js e personRoute.js. O arquivo index.js seria para passar a versão que está a nossa API ou para que possamos passar para um balanceador (Load Balancer) verificar se a nossa API está no ar. O personRoute.js contem as rotas que iremos utilizar para nossa PersonController.

Index.js:

const express = require('express');
const router = express.Router();
router.get('/', function (req, res, next) {
    res.status(200).send({
        title: "Node Express API",
        version: "0.0.1"
    });
});
module.exports = router;

PersonRoute

const express = require('express');
const router = express.Router();
const controller = require('../controllers/personController')
router.post('/', controller.post);
router.put('/:id', controller.put);
router.delete('/:id', controller.delete);
module.exports = router;

7. Configurações

O arquivo app.js é responsável pelas configurações do nosso projeto. É nele que nós devemos configurar a nossa base de dados, rotas etc. Pensando novamente no mundo .NET, eu ousaria dizer que ele seria o nosso web.config.

const express = require('express');
const app = express();
const router = express.Router();
//Rotas
const index = require('./routes/index');
const personRoute = require('./routes/personRoute');
app.use('/', index);
app.use('/persons', personRoute);
module.exports = app;const express = require('express');
const app = express();
const router = express.Router();
//Rotas
const index = require('./routes/index');
const personRoute = require('./routes/personRoute');
app.use('/', index);
app.use('/persons', personRoute);
module.exports = app;

8. Nodemon

O pacote nodemon nos auxilia no momento do nosso desenvolvimento. Com ele, nós não precisamos dar stop e subir novamente a nossa APP. Ele verifica que ocorreu uma alteração e já faz o refresh automaticamente. Para instalá-lo, execute o comando a baixo na sua console:

npm install -g nodemon

9. Arquivo Package.config

Esse seria o arquivo inicial nos projetos Node, nele nós temos todas as dependências:

{
  "name": "node-express",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "express": "^4.15.4"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "nodemon ./bin/server.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

10. Testes

Para que possamos testar o nosso projeto, digite o comando npm install na sua console para importar os pacotes necessários para a nossa aplicação. Assim que ele finalizar, execute o comando npm start. Caso tudo esteja ok nos passos anteriores, você irá ver a mensagem abaixo na sua console:

Agora, abra no seu navegador o endereço http://localhost:3000/. Ele deve apresentar a mensagem abaixo como retorno da nossa rota Index:

Segue o link do projeto completo que criamos nesse artigo Github.