express 中间件 , 第三方中间件: bodyParser
/* Express 中间件 : 中间件的功能包括: 执行任何代码; 修改请求和响应对象; 终结请求-响应循环; 调用堆栈中的下一个中间件。 如果 get 、 post 回调函数中,没有 next 参数,那么就匹配上第一个路由,就不会往下匹配了。 如果想往下匹配,那么就需要写 next() 。 中间件: 中间件:匹配路由之前或者匹配路由完成后的一系列操作。 中间件如果想往下匹配,那么需要写 next() 。 中间件经常用来做权限判断:没有登录跳转到登录页面,登录以后就显示登录后的页面。 Express 应用可以使用的几种中间件: 应用级中间件; 路由级中间件; 错误处理中间件; 内置中间件; 第三方中间件。 */ const express = require("express"); const ejs = require("ejs"); const bodyParser = require("body-parser"); const app = express(); /* ⑤ 第三方中间件 body-parser , 1、安装中间件 : npm i body-parser --save ; 2、声明: const bodyParser = require("body-parser"); 3、配置中间件, app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); 4、接收 post 数据 req.body */ // 配置模板引擎 app.engine("html", ejs.__express); app.set("view engine", "html"); // ④ 内置中间件,配置静态文件目录 // 127.0.0.1:3003/css/base.css 访问该地址试试看 app.use(express.static("static")); // ① 应用级中间件(经常用于权限判断) app.use((req, res, next) => { console.log(new Date()); next(); }); // 第三方中间件 bodyParser 配置: app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.get("/", (req, res) => { res.send("首页12"); }); // ② 路由级中间件(用得少),需要添加参数 next , 和执行往下匹配 next() 函数。 app.get("/news/add", (req, res, next) => { console.log("执行增加新闻"); next(); }); app.get("/news/:id", (req, res) => { res.send("新闻页面:动态路由"); }); // login app.get("/login", (req, res) => { // 在express 获取 get 传值非常简单,直接 req.query 就可以了 // req.query res.render("login", {}); }); // doLogin app.post("/doLogin", (req, res) => { // req.body 获取post 传值 var body = req.body; console.log(body); res.send("执行提交:" + body.username); }); // ③ 错误处理中间件,跟应用级中间件一样的。 // status 状态码 404 时候,就跳转到指定的404页面。 //要放所有路由的底下 app.use((req, res, next) => { res.status(404).send("404 页面不存在"); }); app.listen(3005); console.log("run server http://127.0.0.1:3005");