Форматирование HTTP / JSON-запросов от Node-Red к облачным функциям Google - PullRequest
0 голосов
/ 10 февраля 2019

Мне трудно понять, правильно ли отформатирован мой HTTP-запрос от красного узла к облаку Google.У меня есть очень простая функция в настройке облачных функций Google, просто чтобы проверить, что является входящим и правильно ли все передается.Я передаю ему пару полей данных JSON и возвращаю случайное поле только для проверки.

exports.helloWorld = function helloWorld(req, res)
{
  var myResponse = req.body.topic;
  if(req.get('content-type') === "application/json")
  {
    myResponse += " - Json";
  }


  res.status(200).send(myResponse);
};

Здесь я читаю данные JSON двумя способами.Сервер отвечает строкой «undefined - Json», что означает, что он не правильно читает req.body.topic .Насколько я понимаю, gcloud будет анализировать данные в теле http-запроса на основе заголовка content-type .Этот параметр явно читается правильно, а остальное - нет.

В красном узле я передаю следующие данные узлу HTTP-запроса.У меня есть поля данных как объект, присоединенный к полю тела в HTTP-запросе.

{
   "url":"http://localhost:8010/my-smart-home-xxxx/us-central1/helloWorld",
   "body":
      {
         "topic":"smartGarden/001/moistureLevel",
         "payload":"11",
         "origin":"node-red-local"
       },
    "headers":
      {
        "content-type":"application/json"
      },
        "_msgid":"2aa44dc.b7391b2"
}

Я немного новичок в этом, поэтому я, вероятно, делаю очень простую ошибку.

Я ценю помощь!

(я в настоящее время использую эмулятор функций gcloud, но у меня были те же результаты в реальной облачной среде.)

1 Ответ

0 голосов
/ 11 февраля 2019

Обычная практика получения входных данных и проверки того, что content-type равен json, заключается в запуске чего-то вроде JSON.parse() для преобразования его из строки в json.

...