Atualizado: 02/01/2025

Roteamento no Express - Node.js

Ao lidar com solicitações, o framework Express baseia-se em um sistema de roteamento. Na aplicação, definem-se as rotas e seus respectivos manipuladores. Se a solicitação corresponder a uma determinada rota, o manipulador correspondente é chamado para processar a solicitação.

Para tratar dados em uma rota específica, é possível usar várias funções, como:

  • use

  • get

  • post

  • put

  • delete

Como primeiro parâmetro, essas funções podem aceitar um padrão de endereço para o qual a solicitação será processada. O segundo parâmetro das funções é a função que vai processar a solicitação que corresponde ao padrão de endereço. Por exemplo:

const express = require("express");
const app = express();
    
// Processamento da solicitação no endereço /about
app.get("/about", function(_, response) {
    response.send("<h1>Sobre o site</h1>");
});
    
// Processamento da solicitação no endereço /contact
app.use("/contact", function(_, response) {
    response.send("<h1>Contatos</h1>");
});
    
// Processamento da solicitação na raiz do site
app.get("/", function(_, response) {
    response.send("<h1>Página Principal</h1>");
});
app.listen(3000, () => console.log("Servidor iniciado em http://localhost:3000"));

Quando uma solicitação chega, o Express compara o endereço solicitado com cada uma das rotas. Em seguida, seleciona a primeira rota correspondente. Quando a rota coincide, a função manipuladora dela é chamada.

Caracteres Curinga

Os padrões de endereço utilizados podem conter expressões regulares ou caracteres curinga especiais. Em particular, podemos usar símbolos como ?, +, * e ().

Por exemplo, o símbolo ? indica que o caractere anterior pode aparecer uma vez ou estar ausente. Podemos definir a seguinte função:

app.get("/bo?k", function(request, response) {
    response.send(request.url);
});

Essa rota corresponderá à string de solicitação /bk ou /bok.

O símbolo + indica que o caractere anterior pode aparecer uma ou mais vezes:

app.get("/bo+k", function(request, response) {
    response.send(request.url);
});

Essa rota corresponderá às solicitações /bok, /book, /boook e assim por diante.

O símbolo * indica que qualquer número de caracteres pode estar no lugar do símbolo:

app.get("/bo*k", function(request, response) {
    response.send(request.url);
});

Essa rota corresponderá às solicitações /bork, /bonk, /bor.dak, /bor/ok e assim por diante.

Os parênteses () permitem agrupar caracteres que podem estar presentes na solicitação:

app.get("/book(.html)?", function(request, response) {
    response.send(request.url);
});

A expressão (.html)? indica que a substring .html pode estar presente ou ausente na string de solicitação. Essa rota corresponderá às solicitações /book e /book.html.

Além de definir rotas, podemos usar expressões regulares. Por exemplo, para capturar todas as solicitações a arquivos HTML ou todos os caminhos que terminam com .html:

app.get(/.*(\.)html$/, function(request, response) {
    response.send(request.url);
});
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com