Express
npm install express
1.框架特性
- 提供了方便简洁的路由定义方式
- 对获取HTTP请求参数进行了简化
- 对模板引擎支持度高
- 提供了中间件机制有效控制HTTP请求
- 拥有大量第三方中间件 、
2. Express基础
2.1Express框架写路由
express路由的请求响应不再需要end方法而是用send()方法:
1.send方法内部会检测响应内容的类型
2.send方法回自动设置http状态码
3.send方法会自动设置响应内容的类型及编码
2.2Express框架获取请求参数
3.中间件
中间件就是一堆方法,对客户端发来的请求进行接受、做出响应,也可以将请求交给下一个中间件继续处理
中间件包含:中间件方法和请求处理函数
3.1中间件方法
中间件方法负责拦截请求
3.2请求处理函数
请求处理函数由开发人员提供,负责处理请求
get、post就是两个中间件
3.3连续中间件
默认中间件是从上到下依次匹配,如果匹配成功,中间件就终止匹配
但是可以用请求处理函数的第三个参数next,并在函数中调用next()函数
3.4app.use中间件用法
匹配所有的请求方式,可以直接传入请求处理函数,代表接受所有请求
这个中间件必须定义在其他中间件之前,因为是从上到下匹配 ,不然找不到中间件
第一个参数也可以传入一个请求地址,表示可以接受这个请求地址的所有请求方式
3.5中间件应用
3.5.1路由保护:
客户端在访问需要登陆的页面时,可以先使用中间件判断用户状态,如果未登录,则拦截请求,直接响应禁止登陆
3.5.2网站维护公告:
维护期间,不希望用户访问网站,可以对所有请求拦截,直接做出响应
3.5.3 404 页面定制
在所有中间件后定义一个请求不存在的响应,就是当前面的所有请求都不匹配时,才会返回404这个中间件,并设置res.status(404),此时若访问一个不存在的就会返回状态码为404的也没面
3.6错误处理中间件
捕获错误,并返回错误信息
4.express请求处理
4.1构建模块化路由
const express = require('express);
//创建网站服务器
const app = express();
//创建路由对象
const home = express。Router();
//将路由和请求路径进行匹配
app.user('/home',home);
//在home路由下继续创建路由
home.get('/index',(req,res)=>{
// /home/index
res.send('还原');
});
4.1.1模块化
暴露出home路由模块,在应用时可直接require()导入
const express = require('express');
const home = express.Router();
home.get('/index',(req,res)=>{
res.send('123');
})
module.exports = admin;
4.2GET参数获取
使用 req.query即可获取GET请求的参数,并会将参数转换为对象返回
//例如http://localhost:8080/?name=zhangsan&age=20
app.get('/',(req,res)=>{
req.query;
//{
name:zhangsan,
age:20,
}
})
4.3POST参数获取
使用第三方包 body-parser
const bodyParser = require('bode-parser);
//用app.use中间件对所有请求拦截,在调用bodeParser的方法urlencoded,,检测url是否携带请求参数,
//若携带则将参数转化为对象放进body中
//extended作用是将参数转化为对象格式
app.use(bodyParser.urlencoded({ extended:false}));
//接受请求
app.post('/add',(req,res)=>{
//接受请求参数
console.log(req.body);
})
4.4Express路由参数
app.get('/find/:id/:',(req,res)=>{
console.log(req.params);//{id:123}
})
//客户端 localhost:xxx/find/123;
4.5静态资源处理
express.static可以方便的托管静态文件(img、css、js文件等)
app.use(express.static('public'));
参数为静态资源的绝对路径目录