我的开机自检请求失败,出现'Request with GET/HEAD method cannot have body'错误



我正在尝试使用Zoho Creator的ADD RECORDS DATA API (https://www.zoho.com/creator/help/api/v2/add-records.html)

这里是URL,以帮助您了解我的问题。下面的URL将在我运行POST方法之前向您显示所有涉及的变量的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,
});
}
};

当我取消这2条线在上面的控制器

const response = await fetch(url, options);
const data = await response.json();

得到这个结果

https://vp-expo-node-server.herokuapp.com/eticket/response

由于我不知道如何在浏览器上显示错误,我尝试了console.log它,我在控制台

中得到了这个错误
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寻求帮助(他们提到这是客户端的事情,他们无能为力)

我在评论中得到了我的答案,但只是发布了一个答案,以防其他人在试图发送POST请求时面临'REQUEST WITH GET/HEAD METHOD'错误。

正如@CherryDT指出的,在我的情况下,POST方法没有被使用,因为我把'method'拼写成'method'(我也犯了同样的错误,把'headers'拼写成'headers').

所以'method'属性根本没有被使用,它默认为'GET'…因此出现了错误。