Os frameworks Web fornecem recursos tais como páginas HTML, scripts, imagens, etc. em diferentes rotas.
A seguinte função é utilizada para definir rotas numa aplicação Express –
app.method(path, handler)
Este MÉTODO pode ser aplicado a qualquer um dos verbos HTTP – get, set, put, delete. Também existe um método alternativo, que executa independentemente do tipo de pedido.
Caminho é a rota em que o pedido será executado.
Handler é uma função de retorno que executa quando um tipo de pedido 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 a nossa aplicação e formos ao localhost:3000/hello, o servidor recebe um pedido de retorno na rota “/hello”, a nossa aplicação Express executa a função de retorno ligado a esta rota e envia “Hello World!” como resposta.
Podemos também 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 este pedido, abra o seu terminal e use cURL para executar o seguinte pedido –
curl -X POST "http://localhost:3000/hello"
p>Um método especial, tudo, é fornecido pela Express para lidar com todos os tipos de métodos http numa rota específica, utilizando 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 middleware.
Roteiros
Definir rotas como acima é muito enfadonho de manter. Para separar as rotas do nosso ficheiro principal index.js, utilizaremos o Express.Router. Criar um novo ficheiro chamado things.js e escrever o seguinte no mesmo.
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.jsmodule.exports = router;
Agora a utilizar este router no nosso index.js, escreva o seguinte antes da função app.listen call.
var express = require('Express');var app = express();var things = require('./things.js');//both index.js and things.js should be in same directoryapp.use('/things', things);app.listen(3000);
A app.use function call na rota ‘/things’ liga o router things com esta rota. Agora, qualquer que seja o pedido que a nossa aplicação receber no ‘/things’, será tratado pelo nosso roteador things.js. A rota ‘/’ no things.js é na realidade uma sub-rotina de ‘/things’. Visite localhost:3000/things/ e verá o seguinte output.
p>Routers são muito úteis na separação de preocupações e mantêm partes relevantes do nosso código juntas. Ajudam na construção de códigos que podem ser mantidos. Deve definir as suas rotas relacionadas com uma entidade num único ficheiro e incluí-la utilizando o método acima descrito no seu ficheiro index.js.