14-Node.js学习笔记-Express-中间件01
Express框架是什么
Express 是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助创建各种Web应用
npm install express命令进行下载
Express框架特性
- 提供了方便简洁的路由定义方式
- 对获取HTTP请求参数进行了简化处理
- 对模版引擎支持程度高,方便渲染动态HTML页面
- 提供了中间件机制有效控制HTTP请求
- 拥有大量第三方中间件对功能进行扩展
初体验
``` //引入express框架 const express = require('express'); //创建网站服务器 const app = express(); app.get('/',(req,res)=>{ //send() //1.send()方法内部会检测响应内容的类型 //2.send()方法会自动帮我们设置http状态码 //3.send()方法会帮我们自动设置响应的内容类型及编码 res.send('hello. Express'); }) app.get('/list',(req,res)=>{ res.send({ name:'柠檬不酸', age:20 }) }) //监听端口 app.listen(3000); console.log('网站服务器启动成功'); ```中间件
中间件就是一堆方法,可以接收客户发来的请求,可以对请求做出响应,也可以将请求继续交给下一个中间件继续处理
``` //中间件主要由两部分构成,中间件方法以及请求处理函数 //中间件由Express提供,负责拦截请求,请求处理函数由开发人员提供,负责处理请求 //可以针对同一个请求设置多个中间件,对同一个请求进行多次处理 //默认情况下,请求从上到下一次匹配中间件,一旦匹配成功,终止匹配 //可以调用next方法将请求的控制权交给下一个中间件,直到遇到结束请求的中间件//引入express框架
const express = require('express');
//创建网站服务器
const app = express();
app.get('/request',(req,res,next)=>{
req.name = "柠檬不酸";
next();
})
app.get('/request',(req,res)=>{
res.send(req.name)
})
//监听端口
app.listen(3000);
console.log('网站服务器启动成功');
<h4>app.use中间件用法</h4>
//app.use 匹配所有的请求方式,可以直接传入请求处理函数,代表接收所有的请求
app.use((req,res,next)=>{
console.log(req.url);
next();
});
//app.use 第一个参数也可以传入请求地址,代表不论什么请求方式,只要是这个请求地址就接收这个请求
app.use('/admin',(req,res,next)=>{
console.log(req.url);
next();
});
//引入express框架
const express = require('express');
//创建网站服务器
const app = express();
//接收所有请求的中间件
app.use((req,res,next)=>{
console.log('请求走了app.use中间件')
next();
})
//当客户端访问/request请求的时候走当前中间件
app.use('/request',(req,res,next)=>{
console.log('请求走了app.use /request 中间件')
next();
})
app.get('/list',(req,res,next)=>{
req.name = "柠檬不酸le";
next();
})
app.get('/request',(req,res,next)=>{
req.name = "柠檬不酸";
next();
})
app.get('/request',(req,res)=>{
res.send(req.name)
})
app.get('/list',(req,res)=>{
res.send(req.name)
})
//监听端口
app.listen(3000);
console.log('网站服务器启动成功');
<h3>中间件应用</h3>
<ul>
<li>路由保护,客户端在访问需要登录的页面时,可以先使用中间件判断用户登录状态,用户如果未登录,则拦截请求,直接响应,禁止用户进入需要登录的页面</li>
</ul>
//引入express框架
const express = require('express');
//创建网站服务器
const app = express();
app.use('/admin',(req,res,next)=>{
//用户没有登录
let isLogin = true;
//如果用户登录
if(isLogin){
//让请求继续向下执行
next()
}else{
//没有登录做出的响应
res.send('您还没有登录,不能访问/admin这个页面')
}
})
app.get('/admin',(req,res)=>{
res.send('您已经登录了,可以访问当前页面了')
})
//监听端口
app.listen(3000);
console.log('网站服务器启动成功');
<ul>
<li>网站维护公告,在所有路由的最上面定义接收所有请求的中间件,直接为客户端做出响应,网站正在维护中</li>
</ul>
//引入express框架
const express = require('express');
//创建网站服务器
const app = express();
//网站公告
app.use((req,res)=>{
res.send('当前网站维护中...')
})
app.use('/admin',(req,res,next)=>{
//用户没有登录
let isLogin = true;
//如果用户登录
if(isLogin){
//让请求继续向下执行
next()
}else{
//没有登录做出的响应
res.send('您还没有登录,不能访问/admin这个页面')
}
})
app.get('/admin',(req,res)=>{
res.send('您已经登录了,可以访问当前页面了')
})
//监听端口
app.listen(3000);
console.log('网站服务器启动成功');
<ul>
<li>自定义404页面</li>
</ul>
//引入express框架
const express = require('express');
//创建网站服务器
const app = express();
//网站公告
// app.use((req,res)=>{
// res.send('当前网站维护中...')
// })
app.use('/admin',(req,res,next)=>{
//用户没有登录
let isLogin = true;
//如果用户登录
if(isLogin){
//让请求继续向下执行
next()
}else{
//没有登录做出的响应
res.send('您还没有登录,不能访问/admin这个页面')
}
})
app.get('/admin',(req,res)=>{
res.send('您已经登录了,可以访问当前页面了')
})
//设置404页面
app.use((req,res,next)=>{
//设置状态码
res.status(404)
res.send('当前访问的页面是不存在的')
})
//监听端口
app.listen(3000);
console.log('网站服务器启动成功');