#javascript #fetch #zoho
Вопрос:
Я пытаюсь использовать API для ДОБАВЛЕНИЯ ДАННЫХ Zoho Creator для ДОБАВЛЕНИЯ ЗАПИСЕЙ (https://www.zoho.com/creator/help/api/v2/add-records.html)
И вот URL-адрес, который поможет вам понять мою проблему. URL-адрес ниже покажет вам JSON всех задействованных переменных, прежде чем я запущу метод POST.
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
Поскольку я не знаю, как отобразить ошибку в браузере, я попытался ее утешить.войдите в систему, и я получил эту ошибку в консоли
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)
указывает на незафиксированные строки…
Так что в этих 2 строках я делаю что-то не так.. но, по моему мнению, это правильный способ отправить запрос на публикацию … и я понятия не имею, как запрос на публикацию может привести Request with GET/HEAD method cannot have body
к ошибке.
Любая помощь будет признательна. Я дважды проверил это и даже попросил Зохо о помощи (они упомянули, что это дело на стороне клиента, и они не могли сильно помочь).
Комментарии:
1.
Method:
должно бытьmethod:
,Header:
должно бытьheader:
. JavaScript чувствителен к регистру.2. Вы устанавливаете (неиспользуемое) свойство
Method
вPOST
значение , но (фактически используемое) свойствоmethod
по-прежнему используется по умолчаниюGET
… Обратите внимание на случай сm
! (То же самое дляheaders
.)3. В дополнение к комментарию @Barmar’а, это может помочь: developer.mozilla.org/en-US/docs/Web/API/Fetch_API/…
4. Спасибо Черридту, Бармену и маджусебеттеру… вы, ребята, были правы.. и я чувствую себя немного глупо, не замечая очевидного и теряя из-за этого 2 дня..; -).. спасибо, ребята..
Ответ №1:
У меня есть свой ответ в комментариях, но я просто публикую ответ на случай, если кто-то еще столкнется с ошибкой «ЗАПРОС С МЕТОДОМ GET/HEAD» при попытке отправить запрос на публикацию.
Как указал @CherryDT в моем случае, метод POST не использовался, так как я неправильно написал «метод» как «Метод» (и я совершил ту же ошибку с «заголовками», что и «Заголовки»)..
Таким образом, свойство «метод» вообще не использовалось, и оно по умолчанию «ПОЛУЧАЛО» … и, следовательно, ошибка.