中间件
- Express提供的大部分功能是通过中间件函数完成的,这些中间件函数在Node.js收到请求的时点和发送响应的时点之间执行。(中间件一般都会创建在路由之前,中间件可以在请求到达路由前做一些准备工作,比如:解析Cookie ,解析请求体、解析静态资源 )
- 中间件(Middleware) 是一个函数,它可以访问请求对象(request object (req)), 响应对象(response object (res)), 和 web 应用中处于请求-响应循环流程中的中间件,一般被命名为 next 的变量。
- 中间件的定义 app.use(function(req , res , next){ //代码 });
- 中间件,就是一个特殊的路由(或者说路由是一个特殊的中间件)。他们都是将请求地址和函数进行映射;
-
中间将往往会过滤多种请求;比如中间件设置的请求路径是/hello,那么浏览器请求/hello/abc或请求/hello/gtr时,中间件都会收到请求
-
中间件的路径可以省略不写,如果中间件中不写路径,则所有请求都会经过该中间件
//引入express
var express = require("express");
//创建应用对象
var app = express();
//配置静态资源
app.use(express.static("public"));
//没写路径的中间件
app.use(function (req , res , next) {
console.log("没写路径的中间件");
next();
});
app.use("/hello",function (req , res , next) {
console.log("中间件执行了~~~");
next();
});
app.get("/hello/abc",function (req , res) {
res.send("hello abc")
});
app.get("/hello/nihao",function (req , res ) {
res.send("hello nihao")
});
//监听端口并启动服务器
app.listen(3000 , function () {
console.log("ok");
});
除了自定义中间件,还可以调用第三方的中间件,举例调用body-parser中间件,此中间件可以解析请求体;
使用步骤:
1.下载安装body-parser
npm i body-parser --save
2.引入body-parser
var bodyParser = require("body-parser");
3.将其设置为项目的中间件
app.use(bodyParser.urlencoded({ extended: true }));
例子:
//引入express
var express = require("express");
var bodyParser = require("body-parser");
//创建应用对象
var app = express();
//配置静态资源
app.use(express.static("public"));
//一般设置{ extended: false }
app.use(bodyParser.urlencoded({ extended: false }));
app.post("/hello" , function (req , res) {
//query只能获取查询字符串中的参数
//console.log(req.query);
//req.body 这个属性用来获取请求报文中的请求体
//默认情况下,请求体不会被Express所解析
//如果希望请求体被解析,则需要引入一个中间件body-parser
console.log(req.body.username);
res.send("这是一个post请求");
});
//监听端口并启动服务器
app.listen(3000 , function () {
console.log("ok");
});