1.2:中间件

Posted 棉花糖88

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.2:中间件相关的知识,希望对你有一定的参考价值。

常用的中间件方法

//. app.get() 方法   接收get请求
//. app.post() 方法  接收post请求
//. app.usr() 方法   接收get 和 post 请求

一 中间件基本使用

1)什么是中间件

. 就是express提供的一堆方法
. 可以接收客户端发来的请求 可以对请求做出响应 也可以将请求交给下一个中间件继续处理

2)它的好处

. 可以将一个复杂的请求逻辑进行分开处理
. 也可以在请求到达指定路由之前 先做一些验证 比如查看用户是否登录

3)中间件的构成

. 两部分构成:中间件方法  和  请求处理函数
. 中间件方法由express框架提供 负责 请求拦截
. 请求处理函数由开发人员提供 负责 请求的处理
--------------------------------------------------
路由的get()和post()就属于中间件方法

4 )同一请求可以设置多个中间件

//1 可以针对同一个请求设置多个中间件 对同一个请求进行多次处理

//2 用到了第三个参数  next 它其实是一个权限控制函数 调用它 请求就会走到下一个中间件

代码

//1 引入express框架
const express = require(\'express\');
//2 创建app服务器
const app = express();
//3 引入路径处理模块
const path = require(\'path\');
//3 静态资源访问服务功能
app.use(express.static(path.join(__dirname,\'public\')));

app.get(\'/user\',function (req,res,next) {
    req.name = \'张三\';
    next();//调用next方法 让请求继续向下执行
});

app.get(\'/user\',function (req,res) {
    res.send(req.name);
});
//默认情况下 请求从上到下依次匹配中间件 一旦匹配成功 就不再向下执行
//此时用到了第三个参数 next 它其实是一个方法 作用是: 是否允许请求继续走到下一个中间件
//调用next 请求就会继续向下走


//4 监听端口
app.listen(80);
console.log(\'server服务器启动成功55\');
浏览器地址: http://localhost/user

 

二  app.use中间件的用法

//1 引入express框架
const express = require(\'express\');
//2 创建app服务器
const app = express();

//------------------- 本节重点 --------------------------------
//1. 接受所有的请求: 直接传入请求处理函数 
app.use(function (req,res,next) {
    //res.send(\'你好\');
    next();
});

//2. 接收某一个请求 第一个参数可递请求地址 带表不论什么请求方式 只要是这个请求地址就接收这个请求
app.use(\'/admin\',function (req,res) {
    res.send(\'hello admin\');
});
//---------------------------------------------------

//4 监听端口
app.listen(80);
console.log(\'server服务器启动成功55\');

三 中间件的应用场景

//1 路由保护
   客户端在访问需要登录的页面时 可以先使用中间件判断用户登录状态 用户如果未登录 则拦截请求 直接响应 禁止用户进入需要登录的页面

//2 网站维护公告 [ 定义在所有路由的最前面 ]

//3 自定义404页面 [ 定义在所有路由的最后面 ]

路由保护代码

//1 引入express框架
const express = require(\'express\');
//2 创建app服务器
const app = express();

app.use(\'/admin\',function (req,res,next) {
    isLogin = true;
    if (isLogin) {
        next();
    } else {
        res.send(\'您还没有登录 不能访问后台页面\');
    }
})

app.get(\'/admin\',(req,res) => {
    res.send(\'您已经登录了 可以访问后台页面\');
});


//4 监听端口
app.listen(80);
console.log(\'server服务器启动成功55\');

请求地址: http://localhost/admin

网站公告代码

//1 引入express框架
const express = require(\'express\');
//2 创建app服务器
const app = express();

//需要定义在所有路由的最前面 拦截所有的请求
app.use(function (req,res) {
    res.send(\'网站正在维护中\');
})

//4 监听端口
app.listen(80);
console.log(\'server服务器启动成功55\');

404 代码

//1 引入express框架
const express = require(\'express\');
//2 创建app服务器
const app = express();

app.get(\'/admin\',function (req,res) {
    res.send(\'hello admin\');
});

//自定义404页面
//需要定义在所有路由的最后面 所有路由都匹配过了 也没有找到资源 就是404页面
app.use(function (req,res) {
    //为客户端响应404状态码 以及提示信息 404表示资源没有找到
    res.status(404).send(\'404页面\');
    //可以链式调用
});

//4 监听端口
app.listen(80);
console.log(\'server服务器启动成功55\');

四 错误中间件的使用

 

以上是关于1.2:中间件的主要内容,如果未能解决你的问题,请参考以下文章

Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]

web代码片段

Sublime Text3自定义代码片段

JavaScript笔试题(js高级代码片段)

为啥片段类应该是公开的?

无法更新 View Pager 中的中间片段。