Node.js 获取post请求的数据

了解http请求的小伙伴都知道,通过get方法请求的数据是在url中传递的,我们通过url.parse(request.url).query可以很轻松的从url中获取请求参数。但为了安全考虑更多的请求是用post的方式请求的,这个时候我们应该怎么获取呢,答案如下:

var http = require('http');
        var querystring = require('querystring');
        var util = require('util');

        http.createServer(function (req, res) {
            // 定义了一个post变量,用于暂存请求体的信息
            var post = '';

            // 通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中
            req.on('data', function (chunk) {
                post += chunk;
            });

            // 在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。
            req.on('end', function () {
                post = querystring.parse(post);
                res.end(util.inspect(post));
            });
        }).listen(3000);

我们可以通过req.on在data时订阅回调函数,将req的请求参数赋值给一个变量。当req中请求变量传递完毕时,调用end,传入回调函数,就可以操作请求体中传递的数据了。那么问题又来了,为什么req可以监听on,end这些方法呢?这是因为request 对象是一个 Stream,所谓Stream,是一个抽象接口,Node 中有很多对象实现了这个接口。然后每个 Stream 对象都EventEmitter 的实例。他们都具有以下属性:

  • data - 当有数据可读时触发。

  • end - 没有更多的数据可读时触发。

  • error - 在接收和写入过程中发生错误时触发。

  • finish - 所有数据已被写入到底层系统时触发。

所以req上边就可以监听以上方法来实现对post请求参数的获取;

本文章参考、引用:https://www.runoob.com/nodejs/nodejs-stream.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Node.js 是一个非阻塞 I/O 的环境,能够快速地构建高效的网络应用程序。而 Express 则是 Node.js 中最受欢迎的 Web 框架之一,它为 Node.js 提供了大量的功能和模块。其中,解析 POST 请求数据格式是 Express 最常用的功能之一。 Express 支持解析四种 POST 请求数据格式:URL-encoded 格式、JSON 格式、Raw 格式和 multipart/form-data 格式。 1. URL-encoded 格式:这是最常用的 POST 数据格式,也是默认格式。它的数据格式类似于 URL 查询字符串,通过 key=value 的形式传递参数。Express 提供了 body-parser 中间件,可以自动将 URL-encoded 格式的请求数据解析成 JSON 格式。 2. JSON 格式:JSON 是一种轻量级的数据交换格式,它比 XML 更加简洁易懂,也更加易于解析。如果服务端需要处理 JSON 格式的请求,可以使用 express.json() 中间件来解析请求数据。 3. Raw 格式:Raw 格式是一种原始数据格式,不做任何编码和处理。如果客户端发送的 POST 请求数据是 Raw 格式的,服务端需要使用 body-parser 中间件提供的 raw() 方法解析请求数据,将其转换成 Buffer 类型。 4. multipart/form-data 格式:这种格式常用于上传文件或者提交包含二进制数据的表单。如果服务端需要处理 multipart/form-data 格式的请求,可以使用 multer 中间件来解析请求数据。multer 中间件可以处理文件上传,同时还支持设置上传文件的限制条件。 综上所述,Express 中提供了多种中间件来解析不同格式的 POST 请求数据,开发者可以根据实际需求选择对应的中间件来使用。这些中间件的使用方式都非常简单,在应用程序中添加一条或几条中间件即可完成对 POST 请求数据的解析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值