Express.js – express.json() 函数
express.json()是Express中内置的中间件功能。此方法用于解析带有JSON有效负载的传入请求,并基于bodyparser。
此方法返回仅解析JSON并仅查看内容类型标头与类型选项匹配的请求的中间件。
语法
express.json([options])
参数
以下是此方法可用的不同选项
选项
inflate–这可以启用或禁用对放气或压缩物体的处理。默认值:真
限制-这控制请求正文的最大大小。
reviver–此选项作为第二个参数传递给JSON.parse方法。
严格-这将启用或禁用接受数组或对象。
type–这决定了将被解析的中间件的媒体类型。
示例1
创建一个名为“express.js”的文件并复制以下代码片段。创建文件后,使用命令“nodeexpress.js”运行此代码。
//express.json()演示示例 //导入express模块 var express = require('express'); //初始化express和端口号 var app = express(); var PORT = 3000; //调用express.json()方法进行解析 app.use(express.json()); //阅读内容类型 app.post('/', function (req, res) { console.log(req.body.name) res.end(); }) //监听端口 app.listen(PORT, function(err){ if (err) console.log(err); console.log("Server listening on PORT", PORT); });
在命中API端点之前,设置以下两个属性
在标题中将内容类型设置为application/json。
在POST请求中传递以下正文-{"name":"nhooo"}
输出结果
C:\home\node>> node express.js Server listening on PORT 3000 nhooo
示例2
让我们再看一个例子。
//express.json()演示示例 //导入express模块 var express = require('express'); //初始化express和端口号 var app = express(); var PORT = 3000; //不使用json中间件 //app.use(express.json()); //阅读内容类型 app.post('/', function (req, res) { console.log(req.body.name) res.end(); }) //监听端口 app.listen(PORT, function(err){ if (err) console.log(err); console.log("Server listening on PORT", PORT); });
在命中API端点之前,设置以下两个属性
在标题中将内容类型设置为application/json。
在POST请求中传递以下正文-{"name":"nhooo"}
输出结果
C:\home\node>> node express.js Server listening on PORT 3000 TypeError: Cannot read property 'name' of undefined at /home/node/test/express.js:15:23 atLayer.handle[as handle_request] (/home/node/test/node_modules/express/lib/router/layer.js:95:5) at next (/home/node/test/node_modules/express/lib/router/route.js:137:13) at Route.dispatch (/home/node/test/node_modules/express/lib/router/route.js:112:3) atLayer.handle[as handle_request] (/home/node/test/node_modules/express/lib/router/layer.js:95:5)