![]() |
Neste artigo vou mostrar como criar uma API Restful usando o Nodejs e os recursos do Express e acessando um banco de dados MongoDB. |
![]() |
Neste artigo vamos definir as rotas da nossa aplicação.
Definindo as rotas da nossa aplicação
Para definir as rotas da nossa aplicação vamos utilizar os recursos do Express.
Segundo a documentação do Express, que pode ser consulta neste link: http://expressjs.com/pt-br/starter/basic-routing.html, temos que o roteamento refere-se à determinação de como um aplicativo responde a uma solicitação do cliente por um endpoint específico, que é uma URI (ou caminho) e um método de solicitação HTTP específico (GET, POST, e assim por diante).
Cada rota pode ter uma ou mais funções de manipulação, que são executadas quando a rota é correspondida.
A definição de
rotas aceita a seguinte estrutura:
app.METHOD(PATH, HANDLER)
Onde:
app é uma instância do express.
METHOD é um método de solicitação HTTP: GET, PUT, POST, DELETE , PATCH, etc.
PATH é um caminho no servidor.
HANDLER é a função executada quando a rota é correspondida.
Os seguintes exemplos ilustram a definição de rotas simples.
Responder a uma solicitação (GET) na página inicial na rota raiz (/) :
app.get('/', function (req, res) {
res.send('´Bem vindo ao Express!');
});
Responder a uma solicitação POST na rota /teste (/teste) com a página inicial do aplicativo:
app.post('/teste', function (req, res) {
res.send('respondendo a um POST');
});
Nos exemplos acima criamos rotas e definimos o tratamento que será dado a esse roteamento.
Os métodos do objeto de resposta (res) enviam uma resposta ao cliente. Se nenhum destes métodos forem chamados a partir de um manipulador de rota, a solicitação do cliente será deixada em suspenso. A seguir temos os principais métodos de respostas usados (retirado de : http://expressjs.com/pt-br/guide/routing.html (acessado em abril de 2017))
Método | Descrição |
---|---|
res.download() | Solicita que seja efetuado o download de um arquivo |
res.end() | Termina o processo de resposta. |
res.json() | Envia uma resposta JSON. |
res.jsonp() | Envia uma resposta JSON com suporta ao JSONP. |
res.redirect() | Redireciona uma solicitação. |
res.render() | Renderiza um modelo de visualização. |
res.send() | Envia uma resposta de vários tipos. |
res.sendFile | Envia um arquivo como um fluxo de octeto. |
res.sendStatus() | Configura o código do status de resposta e envia a sua representação em sequência de caracteres como o corpo de resposta. |
Vamos fazer a mesma coisa em nossa aplicação.
Apenas para mostrar o funcionamento das rotas vamos abrir o nosso projeto no VS Code e alterar o código do arquivo app.js conforme mostrado abaixo incluindo as linhas destacadas em azul :
var express = require('express');
var mongoose = require('mongoose');
var app = express();
var url = 'mongodb://seu_usuario:sua_senha@ds145370.mlab.com:45370/produtosdb'
var db = mongoose.connection;
db.on('error', console.error);
db.once('open', function() {
console.log('Conectado ao banco de dados produtosdb MongoDB.')
});
mongoose.connect(url);
app.listen(5000, function () {
console.log('Servidor escutando na porta 5000');
});
app.get('/', function (req, res) {
res.send('´Bem vindo ao Express!');
});
app.get('/teste', function (req, res) {
res.send('respondento a solicitação em /teste');
});
|
No código definimos duas rotas : a rota raiz (/) e a rota /teste que estão respondendo com uma mensagem texto.
Vamos executar a nossa aplicação usando o Nodemon de forma que não precisaremos mais interromper a execução do servidor após qualquer alteração no código.
Abra um terminal e digite seguinte comando : nodemon app
Nosso servidor esta funcionando e agora não precisaremos mais interrompê-lo.
Agora abra um navegador e navegue para os dois endereços abaixo:
A seguir vemos o resultado obtido que confirma que nosso roteamento esta funcionando:
Essa forma de roteamento é a mais simples possível mas podemos usar o Router do Express para criar manipuladores de rotas modulares e montáveis.
Uma instância de Router é um middleware e um sistema de roteamento completo; por essa razão, ela é frequentemente referida como um “mini-aplicativo”.
Para mostrar como o Router funciona vamos alterar o código do arquivo app.js incluindo as linhas destacadas em azul:
var express = require('express');
var mongoose = require('mongoose');
var app = express();
var router = express.Router();
var url = 'mongodb://seu_usuario:sua_senha@ds145370.mlab.com:45370/produtosdb'
var db = mongoose.connection;
db.on('error', console.error);
db.once('open', function() {
console.log('Conectado ao banco de dados produtosdb MongoDB.')
});
mongoose.connect(url);
app.listen(5000, function () {
console.log('Servidor escutando na porta 5000');
});
router.get('/', function(req, res) {
res.send('Esta é página principal!');
});
router.get('/teste', function(req, res) {
res.send('Esta é a página teste');
});
// aplica as rotas em nossa aplicação
app.use('/', router);
|
No código estamos criando uma instância de Router a partir da instãncia do Express que foi criada anteriormente e a seguir definimos as rotas raiz (/) e /teste.
Note que tivemos que aplicar o roteamento usando app.use().
Após salvar basta abrir um navegador e navegar para as rotas definidas. Abaixo temos o resultado:
Agora que você já conhece o básico sobre o roteamento no Express (consulte a documentação para mais recursos), vamos definir o nosso roteamento criando o arquivo produtosRoute.js na pasta routes.
Abra a pasta routes e no menu clique no ícone New File e informe o nome produtosRoute.js. A seguir inclua o código abaixo neste arquivo:
var express = require('express');
var produtosRouter = express.Router();
produtosRouter.route('') .get(function (req,res) { res.send("Exibindo a página principal..."); } module.exports = produtosRouter;
|
No código cima definimos um roteamento para uma instância produtosRouter de Router e exportamos a instância para podermos usar na aplicação.
A seguir altere o código do arquivo app.js incluindo as linhas destacadas em azul:
var express = require('express');
var mongoose = require('mongoose');
var produtosRouter = require('./routes/ProdutosRoute');
var app = express();
var url = 'mongodb://seu_usuario:sua_senha@ds145370.mlab.com:45370/produtosdb'
var db = mongoose.connection;
db.on('error', console.error);
db.once('open', function() {
console.log('Conectado ao banco de dados produtosdb MongoDB.')
});
mongoose.connect(url);
app.listen(5000, function () {
console.log('Servidor escutando na porta 5000');
});
app.use('/produtos',produtosRouter);
|
No código acima precisamos importar uma instância de ProdutosRoute e depois aplicar o roteamento usando o comando:
app.use('/produtos',produtosRouter);
Este comando defina a rota /produtos que será tratada pela instãncia ProdutosRoute. Abrindo um navegado e navegando para http://localhost:500/produtos teremos:
Dessa forma testamos o roteamento criado no arquivo ProdutosRoute.js com sucesso.
Embora o código funcione ele pode ser melhorado e seguindo o princípio da responsabilidade única vamos separar do arquivo ProdutosRoute a lógica que trata o atendimento do roteamento definindo essas ações em outro arquivo.
Para isso vamos usar a pasta controllers e criar controladores que irão realizar a ação de tratamento da requisição e resposta ao nosso roteamento. Assim separamos as responsabilidade e temos um código mais fácil de entender e manter.
Na próxima parte do artigo vamos criar os controladores e continuar definindo as rotas usadas em nossa API.
Respondeu Jesus, e disse-lhes: Ainda que
eu testifico de mim mesmo, o meu testemunho é verdadeiro, porque sei de onde
vim, e para onde vou; mas vós não sabeis de onde venho, nem para onde vou.
Vós julgais segundo a carne; eu a ninguém julgo.
E, se na verdade julgo, o meu juízo é verdadeiro, porque não sou eu só, mas eu e
o Pai que me enviou.
João 8:14-16
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Studio - Bem-Vindo Node.js : desenvolvendo para ... - Macoratti
Visual Studio - Bem-Vindo Node.js : desenvolvendo para ... - Macoratti
Node - Criando uma API REST com Express acessando o ... - Macoratti
Visual Studio - Iniciando com Node.js - Criando um sevidor ... - Macoratti
Node.js - Apresentando e usando o Sequelize (acesso ao ... - Macoratti