ExpressJS - Roteamento

Os frameworks da Web fornecem recursos como páginas HTML, scripts, imagens, etc. em diferentes rotas.

A função a seguir é usada para definir rotas em um aplicativo Express -

app.method (caminho, manipulador)

Este MÉTODO pode ser aplicado a qualquer um dos verbos HTTP - get, set, put, delete. Também existe um método alternativo, que é executado independentemente do tipo de solicitação.

Caminho é a rota na qual a solicitação será executada.

Handler é uma função de retorno de chamada executada quando um tipo de solicitação correspondente é encontrado na rota relevante. Por exemplo,

var express = require('express');
var app = express();

app.get('/hello', function(req, res){
   res.send("Hello World!");
});

app.listen(3000);

Se executarmos nosso aplicativo e formos para localhost:3000/hello, o servidor recebe uma solicitação get na rota "/hello", nosso aplicativo Express executa o callback função anexada a esta rota e envia "Hello World!" como a resposta.

Também podemos ter vários métodos diferentes na mesma rota. Por exemplo,

var express = require('express');
var app = express();

app.get('/hello', function(req, res){
   res.send("Hello World!");
});

app.post('/hello', function(req, res){
   res.send("You just called the post method at '/hello'!\n");
});

app.listen(3000);

Para testar esta solicitação, abra seu terminal e use cURL para executar a seguinte solicitação -

curl -X POST "http://localhost:3000/hello"

Um método especial, all, é fornecido pelo Express para lidar com todos os tipos de métodos http em uma rota específica usando a mesma função. Para usar este método, tente o seguinte.

app.all('/test', function(req, res){
   res.send("HTTP method doesn't have any effect on this route!");
});

Este método é geralmente usado para definir middleware, que discutiremos no capítulo sobre middleware.

Roteadores

Definir rotas como acima é muito tedioso de manter. Para separar as rotas de nosso principalindex.js arquivo, vamos usar Express.Router. Crie um novo arquivo chamadothings.js e digite o seguinte nele.

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

router.get('/', function(req, res){
   res.send('GET route on things.');
});
router.post('/', function(req, res){
   res.send('POST route on things.');
});

//export this router to use in our index.js
module.exports = router;

Agora, para usar este roteador em nosso index.js, digite o seguinte antes de app.listen chamada de função.

var express = require('Express');
var app = express();

var things = require('./things.js');

//both index.js and things.js should be in same directory
app.use('/things', things);

app.listen(3000);

o app.use chamada de função na rota '/things' anexa o thingsroteador com esta rota. Agora, quaisquer solicitações que nosso aplicativo receba em '/ things', serão tratadas por nosso roteador things.js. o'/'rota em things.js é na verdade um sub-roteamento de '/ things'. Visite localhost: 3000 / things / e você verá a seguinte saída.

Os roteadores são muito úteis para separar questões e manter partes relevantes de nosso código juntas. Eles ajudam na construção de código sustentável. Você deve definir suas rotas relacionadas a uma entidade em um único arquivo e incluí-lo usando o método acima em seuindex.js Arquivo.