arrays - 带有对象数组的 HTTPS 发布 URL
问题描述
我一直在尝试使用数组中的对象格式化 URL POST,因为它们需要发布到我的 REST API。我被迫使用来自供应商的古老 API POST 系统,并且一直在尝试破解解决方案。
基本上 JSON 看起来类似于:
{"api_key": "12234",
"server_id:"qwp2222",
"recipients": [
{"email":"john@doe.com",
"name": "john doe"}]
}
我正在尝试将 Array'd 键值对格式化为 URL 的一部分,以便它不会大张旗鼓地发布到端点。我将 URL 的其余部分放在一起没有问题,只是收件人的数组才是问题所在。
我应该如何编写 POST URL 以确保我可以正确发布对象数组?
我提前感谢所有帮助!
解决方案
在这里不起作用,但此代码将从您的 JSON 中创建线性结构,创建表单并提交给自身。
如果您在本地或其他任何地方运行它并添加 f.action = 'your get or post page',它将正确发送数据。
var data = {
api_key: '12234',
server_id: 'qwp2222',
recipients: [{
email: 'john@doe.com',
name: 'john doe'
}]
};
function collectItems(res, json) {
for (var a in json) {
if (json[a].constructor === Array ||
json[a].constructor === Object) {
collectItems(res, json[a]);
} else {
res.push([a, json[a]]);
}
}
}
var all = [];
collectItems(all, data);
var f = document.createElement('FORM');
f.method = 'post';
// default get: ...?api_key=12234&server_id=qwp2222&email=john@doe.com&name=john+doe
for (var e in all) {
var i = document.createElement('INPUT');
i.name = all[e][0];
i.value = all[e][1];
i.type = 'hidden'; // do not show values sent
f.appendChild(i);
}
if (location.search) {
alert("Submit result:" & location.href);
} else {
document.body.appendChild(f);
f.submit();
}
推荐阅读
- python - 如何在熊猫中添加基于选定行过滤器的列?
- python-3.x - 如何自动设置 MDCard 高度
- php - 遇到错误并且无法解决:count(): Argument #1 ($value) must be of type Countable|array, string given
- javascript - 使用 .htdacess 更改页面名称时 PHP GET 变量不起作用
- python - Python/Flask 初学者:如何格式化 db 值?
- typescript - Nextjs 如何在传递时声明 prop 类型?
- vba - Vba 通过使用 seach 函数找到“-”并仅提取数字修复错误
- python-3.x - 从列表中提取值,该列表落在熊猫数据框指定的间隔内
- node.js - 表达静态行为
- mongodb - 在 ubuntu 18.04 中重新安装 mongodb 时出错