Redirecionamento - Node.js
Para realizar redirecionamentos em Node.js, utilizamos o método redirect()
redirect([status,] path)
O parâmetro path
status
Com este método, é possível fazer redirecionamentos tanto para caminhos relativos quanto absolutos, incluindo outros domínios.
Redirecionando para um Caminho Absoluto:
Exemplo:
const express = require("express");
const app = express();
app.use("/index", function (_, response) {
response.redirect("https://www.programicio.com");
{);
app.listen(3000, () => console.log(Servidor iniciado em http://localhost:3000));
Neste exemplo, ao acessar o caminho /index
https://www.programicio.com
Redirecionando para um Caminho Relativo
Os redirecionamentos relativos não são complicados, mas é importante entender como o endereço de redirecionamento é definido. Vamos considerar um redirecionamento relativo ao caminho atual de onde o redirecionamento é feito. Por exemplo:
const express = require("express");
const app = express();
app.use("/home", function (_, response) {
response.redirect("about");
});
app.use("/about", function (_, response) {
response.send("<h1>About</h1>");
});
app.listen(3000, () => console.log(Servidor iniciado em http://localhost:3000));
Neste caso, haverá um redirecionamento do recurso /home
/about
http://localhost:3000/home
http://localhost:3000/about
Agora, vamos ver um exemplo similar:
const express = require("express");
const app = express();
app.use("/home/bar", function (_, response) {
response.redirect("about");
});
app.use("/home/about", function (_, response) {
response.send("<h1>About</h1>");
});
app.listen(3000, () => console.log("Servidor iniciado em http://localhost:3000"));
Neste caso, o redirecionamento será feito para o recurso /home/about
http://localhost:3000/home/bar
http://localhost:3000/home/about
É importante notar que o redirecionamento relativo é feito com base no caminho atual, e não no caminho raiz do servidor.
Para redirecionar em relação ao diretório raiz da aplicação, começamos o endereço com uma barra:
const express = require("express");
const app = express();
app.use("/home/bar", function (_, response) {
response.redirect("/about");
});
app.use("/about", function (_, response) {
response.send("<h1>About</h1>");
});
app.listen(3000, () => console.log("Servidor iniciado em http://localhost:3000"));
Neste caso, o redirecionamento será feito para o recurso /about
http://localhost:3000/home/bar
http://localhost:3000/about
Mais alguns exemplos. Redirecionando para um endereço no mesmo nível:
app.use("/home/foo/bar", function (_, response) {
response.redirect("./about");
});
Este redirecionamento levará de http://localhost:3000/home/foo/bar
http://localhost:3000/home/foo/about
Redirecionando para um endereço no nível acima:
app.use("/home/foo/bar", function (_, response) {
response.redirect("../about");
});
Este redirecionamento levará de http://localhost:3000/home/foo/bar
http://localhost:3000/home/about
Redirecionando um nível acima:
app.use("/home/foo/bar", function (_, response) {
response.redirect(".");
});
Este redirecionamento levará de http://localhost:3000/home/foo/bar
http://localhost:3000/home/foo
Redirecionando dois níveis acima:
app.use("/home/foo/bar", function (_, response) {
response.redirect("..");
});
Este redirecionamento levará de http://localhost:3000/home/foo/bar
http://localhost:3000/home
Por padrão, um redirecionamento envia o código de status 302, que indica que o recurso está temporariamente disponível em um novo endereço. No entanto, podemos especificar o código de status 301 para fazer um redirecionamento permanente:
response.redirect(301, "/about");