例:获取客户端使用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









网友评论