express学习笔记:body-parser解析请求体

GET和POST是我们最常用的提交表单数据的方法。前面在原生node.js部分提到过,我们可以

  • 引入url模块,通过url.parse(req.url, true)的方法来解析GET方式提交的数据;
  • 引入querystring模块,通过querystring.parse(str)的方法来解析POST方式提交的数据;

在使用express框架的时候,解析数据的方法略有不同。

解析GET数据

使用express框架时,解析GET方式提交的数据非常方便,我们可以直接通过request.query来获取。

1
2
3
4
5
<form action="http://localhost:9000" method="get" accept-charset="utf-8">
<input type="text" name="name">
<input type="password" name="pass">
<input type="submit" value="提交">
</form>
1
2
3
4
5
6
7
8
9
10
11
const express = require("express");
let app = express();

app.use('/', (req, res) => {
console.log(req.query);
res.end();
})

app.listen(9000, () => {
console.log("server running at 9000");
})

获取get数据

解析POST数据

当需要解析POST数据的时候,我们需要用到body-parser中间件。

  1. 先下载中间件
    1
    npm install body-parser --save
    这里有一个有意思的点,一般express和koa都会有对应的功能相同的插件,比如前面提到的静态文件管理,express框架的中间件叫做express-static,koa框架使用的是koa-static,但是解析POST数据体的中间件,express使用的是body-parser,并没有强调express,但是koa使用的是koa-bodyparser,这里需要注意,不要下错了。
  2. 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>
  3. 引入body-parser解析
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    const 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方式提交的数据。
解析post数据

总结

使用express框架时

  • 解析GET数据不需要中间件,直接用request.query即可获取数据
  • 解析POST数据需要引入body-parser,先解析(需使用对应格式),在用request.body获取数据

express框架下解析get和post数据