Мой запрос на публикацию завершается ошибкой «Запрос с помощью метода GET/HEAD не может иметь тела»

#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 не использовался, так как я неправильно написал «метод» как «Метод» (и я совершил ту же ошибку с «заголовками», что и «Заголовки»)..

Таким образом, свойство «метод» вообще не использовалось, и оно по умолчанию «ПОЛУЧАЛО» … и, следовательно, ошибка.