我转过几个弯 绕过那个小雨楼
拿着蒲扇摆着衣衫渡着紧箍咒
不问天涯不停留 喝过几壶酒
不过年少白头道义放胸口
倘若明天之后 遥看前尘剑封侯
似那天上神仙无所求
朝朝暮暮君如梦醒十分不为何理由
是真是假是惶恐是无休
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
又过了几个弯 算尽天量道莫慌
踏这田园闻这芳草香
跌跌撞撞仗剑天涯折煞不枉无笔良
是梦是幻是温柔是家乡
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
谁能与我一醉方休
Express框架 数据解析
get的请求数据可以直接同request对象的query属性获取,post呢?
简单点来说我们需要用到一个插件(中间件):body-parser
安装
npm install body-parser
使用
const express = require("express");
const bodyParser = require("body-parser");
var server = express();
server.listen(8080);
server.use(bodyParser.urlencoded({
extended: false, //扩展模式
limit: 2 * 1024 * 104 //限制2m大小
}));
server.use('/', (req, res) => {
console.log(req.body); //post数据
})
如果需要获取到post数据,需要先use调用一次中间件方法,并且他还有两个参数,一个是extended扩展模式,一般为false,还有一个是limit限制数据的大小
然后在后面的use中,我们可以获取到req下的body属性,这个属性默认是没有的,是使用了中间件才产生的。
这就产生了一个链式操作
链式操作
每个监听请求的函数,上一章讲了有三个,get、post、use,他们会有除了requset、response还有第三个参数next,这个参数是可选的,可以自由觉得是否需要进行链式操作。
链式操作还有一个前提,就是他们的路径是要一样的:
server.use("/a",(req,res,next)=>{
});
server.use("/b",(req,res,next)=>{
})
这两个路径都不一样,是无法产生链式操作的,一样才行。
那么什么是链式操作呢?
也就是上一个use处理好后,我下一个use可以在上一个use的基础上再操作。形成工作链。
server.use("/a",(req,res,next)=>{
next();
});
server.use("/a",(req,res,next)=>{
next();
})
我们可以通过自己判断是否调用next方法来实现,是否进行下一步,这样,上一步发生错误,可以及时停止。
那么bodyParser获取到所有路径呢?
server.use((req,res,next)=>{
next();
});
只传一个函数,会在所有路径请求里运行函数。
自定义一个中间件
创建一个query.js文件
const querystring = require("querystring");
module.exports = {
quire : funciton(){
return function(req,res,next){
let str = "";
//监听数据
req.on("data",()=>{
str += data;
});
//数据完毕
req.on("end",()=>{
req.body = querystring.parse(str);
next();
});
}
}
}
注意一点就是,通过form表单的post传过来的参数是:xxx=xxx&xxx=xxx
的格式,如果是其他插件,如axios的post,传过来的可能就是一个json格式的字符串,可以直接JSON.parse()解析成对象,而不用querystring插件。
使用这个中间件
const my-params = require("./query"); //注意路径问题
const express = require("express");
var server = express();
server.listen(8080);
server.use(my-params.quire());
server.user('/',(req,res)=>{
console.log(req.body);
});
这样我们也可以做到bodyParser插件的效果,虽然不是很全面,但是中间件的一些原理,使用是一样的。
0
评论(0)