• node.js 接收post请求的第三方依赖 body-parser中间件(弃用)


    在express中对get请求内置了req.query来获取请求数据,对post请求,需要配合使用body-parser中间件来获取

    示例(来源于文档说明)

    var express = require('express')
    var bodyParser = require('body-parser')
    
    var app = express()
    
    // parse application/x-www-form-urlencoded
    app.use(bodyParser.urlencoded({ extended: false }))
    
    // parse application/json
    app.use(bodyParser.json())
    
    app.use(function (req, res) {
    res.setHeader('Content-Type', 'text/plain')
    res.write('you posted:
    ')
    res.end(JSON.stringify(req.body, null, 2))
    })


    现已弃用,可以直接调用express

    // parse application/x-www-form-urlencoded
    app.use(express.urlencoded({ extended: false }))
    
    // parse application/json
    app.use(express.json())
    
    
    app.use(router)

    不需要安装和引入body-parser了,要记得一定在引入路由之前配置

    自己封装实现body-parser中间件

    const qs=require('qs)
    //解析处理表单POST请求体中间件  自己封装
    app.use((req,res,next)=>{
        //由于表单POST请求可能携带大量的数据,所以在精选请求提交的时候会分多次提交
        //具体分多少次精选提交不一定,取决于数据量的大小
        //在Node中,对于处理这种不确定的数据,使用事件的形式处理
        //这里通过监听req对象的data时间,然后通过对于的回调处理函数中的参数chunk拿到每一个data的数据
        //     data事件出发多少次不一定
        //当时间接受完毕之后,会自动触发req对象的end事件中使用接受到表单POST请求体
        let data='';
        req.on('data',(chunk)=>{
            data+=chunk;
        })
        req.on('end',()=>{
            //手动给req对象挂在一个body属性,值就是当前表单POST请求体对象
            //在后续的处理中间件中,就可以直接使用req.body了
            //因为在同一个请求体中,流通的都是同一个req和res对象
            req.body=qs.parse(data);
            next()
        })
    })
  • 相关阅读:
    Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现
    Apache ActiveMQ序列化漏洞(CVE-2015-5254)复现
    Jenkins Java 反序列化远程执行代码漏洞(CVE-2017-1000353)
    jenkins未授权访问漏洞
    jenkins弱口令漏洞
    jboss 未授权访问漏洞复现
    jboss反序列化漏洞复现(CVE-2017-7504)
    C++中的强制类型转换
    new/delete与命名空间
    函数默认参数与占位参数
  • 原文地址:https://www.cnblogs.com/lvlisn/p/14902867.html
Copyright © 2020-2023  润新知