Node学习(五)022-处理静态资源——自定义中间件处理post提交的数据 & 将接收到的数据,赋值给req.body & 使用express和body-parser中间件处理post提交数据

Node学习(五)022-处理静态资源——自定义中间件处理post提交的数据 & 将接收到的数据,赋值给req.body & 使用express和body-parser中间件处理post提交数据

2.6 自定义中间件处理post提交的数据

思路:

  • 如果是POST方式的请求,则接受数据。并将数据绑定到req对象的body属性上,然后next
  • 如果不是POST方式的请求,则直接next
app.use((req, res, next) => {
    // 判断,看是否是POST方式的请求
    if (req.method === 'POST') {
        // 这里的代码和之前一样,还是接收数据
        let str = '';
        req.on('data', (chunk) => {
            str += chunk;
        });
        req.on('end', () => {
            // 将接收到的数据,赋值给req.body
            // req.body属性本来不存在,是自定义的,你也可以用其他的名字
            req.body = querystring.parse(str); // querystring.parse是将字符串转成对象
            next();
        });
    } else {
        // 不是POST方式的请求,继续向下走
        next();
    }
})

在这里插入图片描述

实例

01-使用中间件来处理POST提交的数据.js

const querystring = require('querystring');

const express = require('express');

const app = express();

app.listen(3000, () => console.log('服务器启动了'));

// 定义中间件,处理POST提交的数据
app.use((req, res, next) => {
    // console.log(req.method); // POST
    if (req.method === 'POST') {
        // 是POST方式的请求,则接收浏览器提交过来的数据
        // 1. 定义空字符串
        let str = '';
        // 2. 注册req的data事件
        req.on('data', (chunk) => {
            str += chunk;
        });
        // 3. 注册req的end事件
        req.on('end', () => {
            // console.log(str); // username=123%40123.com&pwd=123
            // 把接收到的数据,添加到req对象的一个自定义属性中
            req.body = querystring.parse(str);
            next();
        });
    } else {
        next();
    }
});

// 定义接口 loginCheck,接口要接收浏览器提交的账号和密码
app.post('/loginCheck', (req, res) => {
    console.log(req.body); // { username: '123@123.com', pwd: '123' }
});

app.post('/reg', (req, res) => {
    console.log(req.body); // { abc: '123@123.com', bcd: '123' }
});

app.post('/add', (req, res) => {

});

1-postman验证接口-post请求

在这里插入图片描述

2-代码事件-打印验证

在这里插入图片描述

2.7 使用body-parser中间件处理post提交数据

前面,为了理解中间件,都是自定义的中间件,其实,关于接收POST请求体的中间件也早就存在了,它就是body-parser

// 安装
// 找好文件夹
npm install body-parser

代码:

// 如果请求头的 Content-Type为 application/x-www-form-urlencoded,则将请求体赋值给req.body
app.use(bodyParser.urlencoded({extended: false}));
实例

02-使用body-parser来接收POST提交的数据.js

const querystring = require('querystring');

const express = require('express');

const app = express();

app.listen(3000, () => console.log('服务器启动了'));

// 使用body-parser,处理POST提交的数据
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));


// 定义接口 loginCheck,接口要接收浏览器提交的账号和密码
app.post('/loginCheck', (req, res) => {
    console.log(req.body); // { username: '123@123.com', pwd: '123' }
});

app.post('/reg', (req, res) => {
    console.log(req.body); // { abc: '123@123.com', bcd: '123' }
});

app.post('/add', (req, res) => {

});

1-postman验证接口-post请求

在这里插入图片描述

2-代码事件-打印验证

在这里插入图片描述

2.8 整体代码

在这里插入图片描述

// 1. 加载express和body-parser
const express = require('express');
const bodyParser = require('body-parser');

// 2. 创建app对象
const app = express();

// 3. 开启服务
app.listen(3000, () => console.log('开启服务'));

// 4. 定义中间件,处理所有的静态文件
app.use(express.static('manager'));

// 5. 定义中间件,处理POST请求提交的数据
app.use(bodyParser.urlencoded({extended: false}));

// 6/7/8.... 各种接口
app.get('/time', (req, res) => {
    res.send(Date.now() + '');
});

app.post('/loginCheck', (req, res) => {
    console.log(req.body); // { username: '123@123.com', pwd: '123' }
});

app.post('/reg', (req, res) => {
    console.log(req.body); // { abc: '123@123.com', bcd: '123' }
});

效果同上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Node.js中,当我们需要监听微信客户端发来的数据时,通常会使用`req.on`方法来进行事件监听。具体而言,我们可以在服务器端使用以下代码来监听微信客户端发来的数据: ``` req.on('data', function(data) { // 对收到的数据进行处理 }); ``` 这里的`req`是Node.js中的一个请求对象,它代表了服务器端接收到的一个HTTP请求。`on`方法则是`EventEmitter`类中的一个方法,用于监听事件。 在上面的代码中,我们使用`req.on`方法来监听`data`事件,当微信客户端向服务器端发送数据时,就会触发`data`事件,并将接收到的数据作为回调函数的参数传递给我们。我们可以在回调函数中对这些数据进行处理,例如解析XML格式的数据、提取关键信息等。 ### 回答2: 在Node.js中,通过req.on方法可以监听微信客户端传递给服务器的数据。具体而言,req.on方法用于监听请求的"data"事件,这个事件会在接收数据的时候触发。 微信客户端会向服务器发送数据,例如用户在微信中点击某个按钮后,微信客户端会将相应的数据发送到服务器。当服务器接收到这些数据时,就会触发req.on方法中的"data"事件,开发人员可以在事件的回调函数中获取并处理这些数据。 通过监听"data"事件,可以实现实时处理微信客户端发送的数据。在回调函数中,可以使用req.on方法的参数来获取数据,例如通过调用req.on方法的参数data.toString()可以将接收到的数据转换为字符串格式。 总之,Node.js中的req.on方法用于监听微信客户端传递给服务器的数据,通过监听"data"事件可以实时获取并处理这些数据,以便进行相应的操作。 ### 回答3: 在node.js中,通过req.on来监听微信客户端传递过来的数据,主要是通过微信服务器发送过来的HTTP请求中的请求体数据。 微信客户端与服务器之间的通信主要是通过HTTP协议完成的。当微信客户端向服务器发送请求时,请求消息中会携带一些数据,这些数据可以通过req.on方法进行监听和处理。 在监听req.on事件中,可以通过监听"data"事件来获取微信客户端发送的数据。这些数据一般是以JSON格式进行传递,包含了微信用户的信息和请求内容。通过监听"data"事件,可以将这些数据读取到一个缓冲区中。 在监听完"data"事件后,可以通过监听"end"事件来判断数据是否接收完毕。当接收完毕后,可以对这些数据进行处理,例如解析JSON数据,提取其中的需要的字段,进行相应的业务逻辑处理。 需要注意的是,在监听"data"事件时,需要对数据进行拼接,以保证完整接收微信客户端发送的所有数据。这样才能确保获取到的数据是完整的,才能进行正确的处理和分析。 总之,通过req.on监听微信客户端拿到的数据是微信客户端发送的请求消息中的请求体数据,可以通过监听"data"事件来获取,然后进行相应的处理和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值