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");

 

posted @ 2020-12-12 12:53  半遮  阅读(148)  评论(0编辑  收藏  举报