1.数据:GET、POST
2.中间件:使用、写、链式操作
-
GET-无需中间件
req.query -
POST-需要"body-parser"
server.use(bodyParser.urlencoded({}));
server.use(function (){
req.body
});
- 链式操作:
1.1.GET、POST
利用 req.query
server.use(bodyParser.urlencoded({extended:false/true,limit: })); //limit限制 大小
server.use(function (req, res, next){
req.body
});
疑问:bodyParser.urlencoded 中设置 extended 为 true 和为 false 有什么区别吗?
当extended为false的时候,键值对中的值就为'String'或'Array'形式,为true的时候,则可为任何数据类型。
2.1.链式操作
server.use(function (req, res, next){});
server.get('/', function (req, res, next){});
server.post(function (req, res, next){});
next——下一个步骤
next();
server.use('/login', function (){
mysql.query(function (){
if(有错)
res.emit('error');
else
next();
});
});
2.2 中间件(body-parser)、自己写中间件
有个 next(); 参数
server.use(function (req, res, next){
var str='';
req.on('data', function (data){
str+=data;
});
req.on('end', function (){
req.body=querystring.parse(str);
next();
});
});
自己写的中间件实例:
module模块:
import { request } from 'https';
import { read } from 'fs';
// 自己写的中间件
const querystring=require('querystring');
module.exports={
aaa: function (){
return function (req, res, next){
var str='';
req.on('data', function (data){
str+=data;
});
req.on('end', function (){
req.body=querystring.parse(str);
next();
});
};
}
}
js文件:
const express = require('express');
const bodyParser2 = require(' //改成你自己的路径 ');
var server = express();
server.listen(8080)
// 用自己的中间件
server.use(bodyParser2.aaa());
server.use('/',function(req,res){
console.log(req.body);
})