【发布时间】:2021-11-26 22:08:03
【问题描述】:
我正在尝试使用 Zoho Creator 的添加记录数据 API (https://www.zoho.com/creator/help/api/v2/add-records.html)
这里是帮助您了解我的问题的 URL。在我运行 POST 方法之前,下面的 URL 将向您显示所有涉及的变量的 JSON。
https://vp-expo-node-server.herokuapp.com/eticket/
上面的这个链接会显示这个控制器的结果
exports.addOneExhibitorToCreator = async function(req, res, next) {
try {
const token = await getAccessToken();
const url = process.env.ZOHO_CREATOR_FORM_URL + "/Add_Organisation";
// const organisation = req.body;
const organisation = {
data: {
isActive: true,
Organisation_Name: "Test With Alim",
Type: "Exhibitor",
Short_Name: "test",
Email: "test@fourplusmedia.com",
},
};
const options = {
Method: "POST",
Headers: {
"Content-Type": "application/json",
Authorization: "Zoho-oauthtoken " + token,
},
body: JSON.stringify(organisation),
};
const functionForResponse = "const response = await fetch(url, options);";
// const response = await fetch(url, options);
// const data = await response.json();
res.status(200).json({
status: "success",
token,
options,
url,
organisation,
functionForResponse,
});
} catch (err) {
console.log(err);
res.status(500).json({
err,
});
}
};
当我在上面的控制器中取消注释这两行时
const response = await fetch(url, options);
const data = await response.json();
我得到了这个结果
https://vp-expo-node-server.herokuapp.com/eticket/response
由于我不知道如何在浏览器上显示错误,因此我尝试对其进行控制台记录,但在控制台中出现此错误
TypeError: Request with GET/HEAD method cannot have body
at new Request (/Applications/MAMP/htdocs/vp-expo-node-server/node_modules/node-fetch/lib/index.js:1199:10)
at /Applications/MAMP/htdocs/vp-expo-node-server/node_modules/node-fetch/lib/index.js:1409:19
at new Promise (<anonymous>)
at fetch (/Applications/MAMP/htdocs/vp-expo-node-server/node_modules/node-fetch/lib/index.js:1407:9)
at exports.addOneExhibitorToCreatorResponse (/Applications/MAMP/htdocs/vp-expo-node-server/controllers/eticketController.js:82:28)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
我可以确认 console.log 中的这一行
at exports.addOneExhibitorToCreatorResponse (/Applications/MAMP/htdocs/vp-expo-node-server/controllers/eticketController.js:82:28)
指向未注释的行...
所以我在这两行中做错了。但据我所知,这是发送 POST 请求的正确方法。我不知道 POST 请求如何获得Request with GET/HEAD method cannot have body 错误。
任何帮助将不胜感激。我仔细检查了它,我什至向 Zoho 寻求帮助(他们提到这是客户端的事情,他们帮不上什么忙)
【问题讨论】:
-
Method:应该是method:,Header:应该是header:。 JavaScript 区分大小写。 -
您正在将(未使用的)属性
Method设置为POST,但(实际使用的)属性method仍处于其默认值GET...请注意以下情况m! (headers也一样。) -
除了@Barmar 的评论,这可能会有所帮助:developer.mozilla.org/en-US/docs/Web/API/Fetch_API/…
-
感谢 CherryDT 和 Barmar 以及 majusebetter……你们是对的……我觉得有点愚蠢,没有注意到显而易见的事情,为此损失了 2 天……;-).. 谢谢大家……
标签: javascript fetch zoho