exprss如何解析客户端提交的json字符串数据?自定义中间件
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
在express
中,有个express.json()
的中间件,作用是自动解析req.body
里面的内容,json
字符串转json
对象。其实写法和用法都很简单,一秒就懂。这里还阐述了一下自定义实现这个express.json()
中间件的方式方法,算是抛砖引玉。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。本文测试环境:nodejs@20.18.0
,chrome@
131.0.6778.140,
express@4.21.2。这个
express.json()中间件是
express`自带的,不用额外安装。
express.json()
本文例子,建立在一个很不常见的post
类型(通常通过js
发送请求)上,它的enctype
为application/json
。它发送的数据是个json
的字符串,最终通过中间件express.json()
的解析,把req.body
的内容,解析为json
对象。
中间件的使用方式,有两种。可以全局使用:
app.use( express.json() );
也可以在特定的路由上【推荐】,使用它。例如:
app.post("*", express.json(), (req, res) => {
//...
});
本文内容的更多例子,可以参考:
自定义中间件 express.json()
express.json()
的运行逻辑:
作为Express.js
中的一个中间件,express.json()
通过拦截请求在到达路由处理程序之前来处理请求。如果请求的Content-Type
头部设置为application/json
,它会将请求体从JSON
字符串解析为JavaScript
对象。解析后,生成的JavaScript
对象会附加到req.body
属性上,使其在后续的路由处理程序或中间件中容易访问。
这段代码是自定义模拟了express.json()
,可以用作自定义类型的各种逻辑。参考这段代码,可以做更多的扩展功能。
function myExpressJsonParser(req, res, next) {
if (req.headers["content-type"] === "application/json") {
let data = "";
req.on("data", (chunk) => {
data += chunk;
});
req.on("end", () => {
try {
req.body = JSON.parse(data);
next();
} catch (error) {
res.status(400).send("无效的JSON");
}
});
} else {
next();
}
}
这个中间件,也一样有全局和局部两种写法:
app.use( myExpressJsonParser );
也可以在特定的路由上【推荐】,使用它。例如:
app.post("*", myExpressJsonParser, (req, res) => {
//...
});
注意:自定义的这个中间件,直接使用名称myExpressJsonParser
,写法上没有()
。
相关文章
- https://newsn.net/say/express-formidable.html
- https://newsn.net/say/express-body-parser.html
- https://newsn.net/say/express-middleware.html
- https://newsn.net/say/express-html.html
- https://newsn.net/say/express.html
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。