NodeJs express自定义中间件

用过express 的开发者,想必一定用过中间件。本文就说一下自定义的中间件。

一,先看下中间件的使用。

1访问文件的中间件 express-static

const express = require("express");
const expressStatic = require("express-static");

var app = express();
app.listen(8080);

// 当访问接口的时候,会走下面的操作
// 比如 http://localhost:8080/login?name=zhangsan&age=18
app.get("/login", function (req, res) {
	console.log(req.query);
	res.send({ok: false, msg: '信息'})
})
// 当访问文件的时候,会走下面的操作
// 比如 http://localhost:8080/a.html
app.use(expressStatic('./www'));

2 处理post 请求,请求数据的处理中间件 body-parser

const express = require('express');
const bodyParser = require('body-parser');

var app = express();
app.listen(8080);

app.use(bodyParser.urlencoded({
	extended: false,
	limit: 2*1024*1024
}))

app.use("/login", function (req, res) {
	console.log("body", req.body);
})
如果不用中间件的话,post 请求过来的数据是要自己去处理的,那么使用了中间件后,就会很方便的拿到请求参数。

总的来说中间件的使用就是

app.use(fn); //中间件的函数
app.use("地址", function (req, res) {
	// 业务
})


二,自己开发中间件

1 链式操作

app.use("/", function (req, res, next) {
	console.log("AAAA");
	next();
})
app.use("/", function (req, res, next) {
	console.log("BBBB");
})
这样写的话 控制台会先后输出

AAAA

BBBB

那么只要在写 AAAA的地方做一些处理,那么在BBBB里面就可以直接使用AAAA的处理结果。

看下 Express 4.x 的官网


可以可以看到 use 的参数可以只传一个函数体,那么中间件的函数定义就是在这里。

2 自己定义一个post 处理中间件。

const express = require('express');
const querystring = require('querystring');
var app = express();

app.listen(8080);

app.use(function (req, res, next) {
	var str = "";
	req.on("data", function (data) {
		str += data;
	});
	req.on("end", function () {
		// 把数据绑定到 req 对象上,然后在后面就能够使用
		req.body = querystring.parse(str);
		next();
	})
})
app.use("/", function (req, res, next) {
	console.log("拿到数据", req.body)
})





你可能感兴趣的:(NodeJS)