GET和POST是我们最常用的提交表单数据的方法。前面在原生node.js部分提到过,我们可以
- 引入url模块,通过
url.parse(req.url, true)
的方法来解析GET方式提交的数据; - 引入querystring模块,通过
querystring.parse(str)
的方法来解析POST方式提交的数据;
在使用express框架的时候,解析数据的方法略有不同。
解析GET数据
使用express框架时,解析GET方式提交的数据非常方便,我们可以直接通过request.query
来获取。
1 | <form action="http://localhost:9000" method="get" accept-charset="utf-8"> |
1 | const express = require("express"); |
解析POST数据
当需要解析POST数据的时候,我们需要用到body-parser中间件。
- 先下载中间件这里有一个有意思的点,一般express和koa都会有对应的功能相同的插件,比如前面提到的静态文件管理,express框架的中间件叫做
1
npm install body-parser --save
express-static
,koa框架使用的是koa-static
,但是解析POST数据体的中间件,express使用的是body-parser
,并没有强调express,但是koa使用的是koa-bodyparser
,这里需要注意,不要下错了。 - form使用post方式提交
1
2
3
4
5<form action="http://localhost:9000" method="post" accept-charset="utf-8">
<input type="text" name="name">
<input type="password" name="pass">
<input type="submit" value="提交">
</form> - 引入
body-parser
解析1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16const express = require("express");
const bodyParser = require("body-parser");
let app = express();
app.use(bodyParser.urlencoded({
extended: false
}));
app.use('/', (req, res) => {
console.log(req.body);
res.end();
});
app.listen(9000, () => {
console.log("server running at 9000");
});
app.use(bodyParser.urlencoded({extended: false})
用于解析application/x-www-form-urlencoded
格式的数据app.use(bodyParser.json())
用于解析json格式的数据
最终可以直接获得POST方式提交的数据。
总结
使用express框架时
- 解析GET数据不需要中间件,直接用request.query即可获取数据
- 解析POST数据需要引入
body-parser
,先解析(需使用对应格式),在用request.body获取数据