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('网站服务器启动成功');

原文地址:https://www.cnblogs.com/foreverLuckyStar/p/12081947.html