我正在使用一个REST API,该API包含POST方法来创建新的小部件。我需要发送的数据如下所示:
key | value
widgetnum | 12345
02:00:00_03:00:00_mtwrfsn | [email protected]
12:00:00_15:00:00_mt | [email protected]
到目前为止,我一直在通过BODY中的两个键来发布数据:
widgetnum : 12345
tc : 02:00:00_03:00:[email protected],12:00:00_15:00:[email protected]
如您在上面的示例中看到的那样,键“ tc”实际上包含两个记录的信息,只是用逗号隔开。但是昨天,当我在邮递员应用程序中闲逛时……我意识到我可以发送多个键/值对。我不知道为什么这个从来没有点击过。(这样的菜鸟)无论如何,我现在意识到,我实际上可以做到这一点:
widgetnum : 12345
02:00:00_03:00:00_mtwrfsn : [email protected]
12:00:00_15:00:00_mt : [email protected]
问题
就我的JavaScript代码而言,更改我发布数据的方式是否更有效率?因此,例如,今天,我的代码如下所示:
router.post('/', function(req, res, next) {
var widgetnum = req.body.widgetnum;
var tc = req.body.tc;
var tc_array = tc.split(",");
又名-我可以使用非常特定的键名来查找我的数据。
但是,如果更改发布数据的方式,我相信我将不得不循环查找所有密钥。
所以像这样:
router.post('/', function(req, res, next) {
//loop through req.body object.
for (var key in req.body) {
if (req.body.hasOwnProperty(key)) {
// add some logic here to test if the key is
// widgetnum or a tc type key.
console.log(key + " -> " + req.body[key]);
}
}
res.status(200).send('ok');
return;
});
如果这似乎是一个补救性问题,我很抱歉-可能是。但是,如果在一个键/值对中发布多个tc记录的格式不好,我很乐意对其进行更改。也许有一种更有效的方式来编写我的JavaScript代码以查找数据。
谢谢。
要发送和接收键/值对,已经存在(几乎)为您工作的格式。其中之一就是JSON,JSON得到了广泛的支持,尤其是在JavaScript中。
由于您已经在使用express,因此可以添加body-parser
并设置它以自动解析JSON:
发送的数据(POSTMan:主体类型:application / json,复制粘贴在主体中。
{
"widgetnum" : 12345,
"tc" : {
"02:00:00_03:00:00_mtwrfsn": [email protected],
"12:00:00_15:00:00_mt": [email protected]
}
}
服务器代码:
"use strict";
const express = require('express'),
router = express.Router(),
bodyParser = require('body-parser');
router.use(bodyParser.json());
router.post('/', function(req, res, next) {
var widgetnum = req.body.widgetnum;
var tc = req.body.tc;
//No more need for tc_array
//...
}
不再需要自定义格式,req.body将是与发送的JSON具有相同形式的JS对象,因此您可以执行以下操作:
console.log(req.body.tc['02:00:00_03:00:00_mtwrfsn']); //print [email protected]
console.log(Object.keys(req.body.tc)); //Print ['02:00:00_03:00:00_mtwrfsn', '12:00:00_15:00:00_mt']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句