Node 填坑教程之过滤器

发布于 2021-11-18 12:55:21 字数 1555 浏览 1321 评论 0

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

比如有如下路由

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

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

app.use(function (req, res, next) {
    return res.send('filter');
});

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

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

app.use(function (req, res, next) {
    if (req.path === '/') return next();
    return res.send('filter');
});

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

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

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

app.use(function (req, res, next) {
    if (req.path === '/') return next();
    return next();
});

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

app.use(function (req, res, next) {
   res.send('404');
});

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

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

app.use(function (req, res, next) {
    if (req.path === '/') return next();
    return next(new Error());
});

app.get('/', function (req, res, next) {
    res.send('index');
});
 
app.use(function (req, res, next) {
   res.send('404');
});

app.use(function (err, req, res, next) {
    res.send('err');
});

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

爱的故事

暂无简介

0 文章
0 评论
630 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文