美文网首页
06-中间件应用-json解析

06-中间件应用-json解析

作者: 静昕妈妈芦培培 | 来源:发表于2021-03-11 11:45 被阅读0次

例:获取客户端使用post方法json传参发送请求传的参数

const express = require('express')

const app = express()

//假如前端发送请求时使用的时post方法,json方式传参
app.post('/user', (req, res, next) => {

    //获取请求传过来的json格式的参数
    //设置读取到的数据时字符串
    req.setEncoding('utf8')
    let body = ''

    //读取请求中数据
    req.on('data', (chunk) => {
        body += chunk
    })

    //监听读取结束
    req.on('end', () => {
        //此时已读取到了所有的数据
        console.log(JSON.parse(body))
        res.end('用户信息')
    })


})

app.listen(8000, () => {
    console.log('express服务器启动成功')
})

如下:可以看到顺利的获取到了客户端使用json方式传递过来的参数


image.png
image.png

在获取请求参数的过程中,我们需要主动读取请求携带的数据,监听读取数据完毕,然后把json字符串解析为对象,
如果客户端向后端发送20次post请求,json方式,传参,上面的过程我们都进行20次,不仅累赘,还浪费时间,
可以使用一个普通中间件专门帮我们读取,解析请求内容类型为‘application/json'的数据,然后传递给特定的路径方法中间件

例:使用一个普通中间件专门帮我们读取,解析请求内容类型为‘application/json'的数据,然后传递给特定的路径方法中间件

const express = require('express')

const app = express()

//注册一个普通中间件专门用来获取解析请求头内容类型为application/json的请求传递过来的参数
app.use((req, res, next) => {
    //假如请求头内容类型为application/json
    if(req.headers['content-type'] === 'application/json') {
        //获取请求传过来的json格式的参数
        //设置读取到的数据时字符串
        req.setEncoding('utf8')
        let body = ''

        //读取请求中数据
        req.on('data', (chunk) => {
            body += chunk
        })

        //监听读取结束
        req.on('end', () => {
            //此时已读取到了所有的数据
            console.log(JSON.parse(body))

            //通过把参数绑定为req的属性的方式,传递给下一个中间件
            req.body = JSON.parse(body)
            res.end('用户信息')
            next()
        })
    }

})

//假如前端发送请求时使用的时post方法,json方式传参
app.post('/user', (req, res, next) => {

    //获取普通中间件传递过来的参数
    console.log('下面是普通中间件传递过来的参数')
    console.dir(req.body)

})

app.listen(8000, () => {
    console.log('express服务器启动成功')
})

结果如下:


image.png
image.png

上面是我们手动通过注册普通中间件的方法读取和解析客户端通过post方式json传参传过来的参数,但其实,express是有一个内置函数express.json()可用来帮我们做这些事情,只需要使用普通中间件注册就行

例:使用express内置函数express.json()读取和解析客户端通过post方式json传参传过来的参数

const express = require('express')

const app = express()

//注册一个普通中间件专门用来获取解析请求头内容类型为application/json的请求传递过来的参数
app.use(express.json())

//假如前端发送请求时使用的时post方法,json方式传参
app.post('/user', (req, res, next) => {

    //获取普通中间件传递过来的参数
    console.log('下面是普通中间件传递过来的参数')
    console.dir(req.body)
    res.end('用户信息')

})

app.listen(8000, () => {
    console.log('express服务器启动成功')
})

执行结果;


image.png
image.png

相关文章

  • 06-中间件应用-json解析

    例:获取客户端使用post方法json传参发送请求传的参数 如下:可以看到顺利的获取到了客户端使用json方式传递...

  • json-1008

    json入门json实验json在项目中的应用总结 json练习题 json解析练习

  • node body-parser解析post请求数据

    body-parser是一个HTTP请求体解析中间件,使用这个模块可以解析JSON、Raw、文本、URL-enco...

  • 关于body-parser

    是什么: body-parser是一个HTTP请求体解析中间件,使用这个模块可以解析JSON、Raw、文本、URL...

  • Express 中间件----body-parser(五)

    body-parser是什么? body-parser是一个HTTP请求体解析中间件,使用这个模块可以解析JSON...

  • Express 中间件----body-parser【转载】

    body-parser是什么? body-parser是一个HTTP请求体解析中间件,使用这个模块可以解析JSON...

  • JSON

    各个JSON技术的比较 json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实...

  • Gson、FastJson、Jackson、json-lib对比

    一 、各个JSON技术的简介和优劣 json-lib json-lib最开始的也是应用最广泛的json解析工具,j...

  • Java序列化篇之Json解析工具Jackson

    json 的解析包: Jackson的基本应用: JsonNode 类是 Jackson 的一个将 Json 内容...

  • JSON

    JSON解析(反序列化) JSON解析(序列化) JSON解析补充

网友评论

      本文标题:06-中间件应用-json解析

      本文链接:https://www.haomeiwen.com/subject/hjmnqltx.html