Node填坑教程——过滤器

本文深入探讨了HTTP过滤器的概念及其在路由系统中的作用。通过实例演示了如何使用过滤器进行前置和后置操作,包括封锁请求、显示默认页面及处理错误情况。详细解释了过滤器作为中间件在不同场景下的应用策略。

所谓“过滤器”,只是一个概念,可以理解是一个路由,也可以理解为一个中间件。原理非常简单,就是利用匹配规则,让其有限匹配在正常的路由前面处理就行了。

比如有如下路由

1 app.get('/', function (req, res, next) {
2     res.send('index');
3 });

访问根目录就能看到index。在前面加上一个路由,封锁全部请求

1 app.use(function (req, res, next) {
2     return res.send('filter');
3 });
4 
5 app.get('/', function (req, res, next) {
6     res.send('index');
7 });

现在不管访问什么都只能得到 filter。然后我们放过根目录的请求。

1 app.use(function (req, res, next) {
2     if (req.path === '/') return next();
3     return res.send('filter');
4 });
5 
6 app.get('/', function (req, res, next) {
7     res.send('index');
8 });

现在根目录能正常访问了。其他的路径仍然会显示 filter。当然根据具体逻辑能实现各种规则匹配策略。

过滤器相当于前置工作,那么与之相对的也有后置工作。通常用来处理404和错误页面。

 1 app.use(function (req, res, next) {
 2     if (req.path === '/') return next();
 3     return next();
 4 });
 5 
 6 app.get('/', function (req, res, next) {
 7     res.send('index');
 8 });
 9 
10 app.use(function (req, res, next) {
11    res.send('404');
12 });

前置路由全部放行,根路径会匹配到get的路由,其他路径只能匹配到最后一个路由,也就是404的路由了。

那怎么显示异常页面呢,路由的回调里还有个参数,4个参数的函数会用来处理错误。

 1 app.use(function (req, res, next) {
 2     if (req.path === '/') return next();
 3     return next(new Error());
 4 });
 5 
 6 app.get('/', function (req, res, next) {
 7     res.send('index');
 8 });
 9 
10 app.use(function (req, res, next) {
11    res.send('404');
12 });
13 
14 app.use(function (err, req, res, next) {
15     res.send('err');
16 });

next带上一个参数就会匹配到4个参数的路由,也就是错误处理路由了。这样非根目录的请求直接跳转到错误页面。

转载于:https://www.cnblogs.com/heron/p/4487166.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值