【express-generator】08-路由重定向
前言
通过前面两篇文章的讲解,我们已经介绍完第二阶段的前两点,本篇介绍第三点:路由重定向。
1. 路由重定向概述
路由重定向是指在服务器端将客户端的请求从一个 URL 重定向到另一个 URL 的过程。这通常通过 HTTP 状态码(如 301 永久重定向、302 临时重定向)和 Location
响应头来实现。
2. 重定向的用途
URL 规范化:
将多个 URL 规范化为一个标准 URL,避免重复内容。例如,将
http://example.com
和http://example.com/
规范化为同一个 URL。维护旧链接:
在页面或资源移动后,保持旧链接的有效性。例如,将旧的博客文章 URL 重定向到新的 URL。
用户引导:
将用户从一个页面引导到另一个页面,例如登录后跳转到主页。
安全考虑:
在某些情况下,重定向可以用于安全目的,例如防止直接访问某些页面。
3. Express 中的重定向
在 Express 中,可以使用 res.redirect()
方法实现重定向。这个方法可以指定重定向的目标 URL,包括内部路由或外部链接。默认情况下,res.redirect()
使用 302 临时重定向状态码,但也可以指定其他状态码。
常见的重定向状态码:
301 永久重定向:表示请求的资源已被永久移动到新的位置。
302 临时重定向:表示请求的资源已被临时移动到新的位置。
307 临时重定向:与 302 类似,但要求客户端保持请求方法不变。
308 永久重定向:与 301 类似,但要求客户端保持请求方法不变。
4. 重定向的类型
内部重定向:
将请求重定向到同一个应用内的其他路由。例如,将
/old-path
重定向到/new-path
。外部重定向:
将请求重定向到外部网站或资源。例如,将
/external
重定向到https://example.com
。条件重定向:
根据某些条件(如用户身份验证状态)决定是否重定向。例如,如果用户未登录,重定向到登录页面。
5. 重定向的实现
示例 1:内部重定向
router.get('/old-path', (req, res) => {res.redirect('/new-path');
});
通过一个简单的API测试,在响应结果可以看见提示词重定向到/new-path,同时右上角的状态也对应显示302(临时重定向)
示例 2:外部重定向
router.get('/outside', (req, res) => {res.redirect('https://baidu.com');
});
一样会有重定向提示以及302的状态码,只不过这次重定向是外部路由(这里我设置成https://baidu.com)
示例 3:条件重定向
router.get('/dashboard', function(req, res, next) {if (!req.body.user) {res.redirect('/login');} else {res.send('Welcome to the dashboard!');}
});
需要携带一个user参数,如果没有,则重定向到/login
携带一个user参数的响应结果: