Как передать параметры в URL с помощью облачных функций Google - PullRequest
0 голосов
/ 01 февраля 2019

Я использую http-вызовы для вызова облачной функции.У меня есть URL-адрес в виде
url: 'https://api.shipengine.com/v1/labels/rates/rateid,

Теперь мне нужно передавать значения динамически в рейтингах всякий раз, когда происходит вызов функции.Как передать значение в этот URL.Я тоже присоединяю свою облачную функцию.

exports.shipmentlabelwithreturnid = functions.https.onRequest((req, res) => {

var request = require("request");


var rateid = req.body.RateId;
  console.log(rateid);

var options = { method: 'POST',
  url: 'https://api.shipengine.com/v1/labels/rates/'+ rateid,
  headers: 
   { 'content-type': 'application/json',
     accept: 'application/json' 
   } 
 };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

});

1 Ответ

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

Вы должны использовать обещания в своей облачной функции для обработки асинхронных задач.По умолчанию request не возвращает обещания, поэтому вам необходимо использовать интерфейсную оболочку для запроса, например request-promise, которая «возвращает обычное обещание / совместимое обещание +» следующим образом:

....
const rp = require('request-promise');

exports.shipmentlabelwithreturnid = functions.https.onRequest((req, res) => {

  var rateid = req.body.RateId;
  console.log(rateid);

  var options = { method: 'POST',
     uri: 'https://api.shipengine.com/v1/labels/rates/'+ rateid,
     headers: 
        { 'content-type': 'application/json',
         accept: 'application/json' 
     } 
  };

  rp(options)
    .then(response => {
      console.log('Get response: ' + response.statusCode);
      res.send('Success');
    })
    .catch(err => {
      // API call failed...
      res.status(500).send('Error': err);
    });

});

Также важно отметить, что вы должны быть в тарифном плане «Пламя» или «Пламя».

На самом деле, бесплатный план «Искра» допускает исходящиесетевые запросы только к сервисам, принадлежащим Google ».См. https://firebase.google.com/pricing/ (наведите курсор мыши на знак вопроса, расположенный после заголовка «Облачные функции»)

Так как https://api.shipengine.com не принадлежит Google, вам необходимо переключиться наплан "Пламя" или "Пламя".


В связи с тем, что вы должны использовать обещания для выполнения асинхронных задач, я предлагаю вам посмотреть эти видео от команды Firebase: https://www.youtube.com/watch?v=7IkUgCLr5oA&t=28s и https://www.youtube.com/watch?v=652XeeKNHSk, которые объясняютэто ключевое понятие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...