Функция Google Cloud HTTP - Почему эта функция так требовательна к формату cURL json - PullRequest
0 голосов
/ 13 января 2020

Я мог бы немного помочь понять, почему моя облачная функция Google так требовательна к формату, который я передаю JSON.

Я следовал этому руководству из Google Cloud . В самом первом примере на странице вы создали функцию, подобную этой:

exports.helloHttp = (req, res) => {
  res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
};

Затем они просят вас вызвать ее с помощью curl:

curl -X POST HTTP_TRIGGER_ENDPOINT -H "Content-Type:application/json"  -d '{"name":"Jane"}'

К моему удивлению, я не смог заставить его работать, я потратил много времени, играя с параметрами и параметрами, пока это не сработало для меня:

curl -X POST HTTP_TRIGGER_ENDPOINT -H "Content-Type:application/json"  -d {\"name\":\"Jane\"}

Я использую машину Windows 10 и на терминале с узлом ( 10) установлено (в случае, если это имеет значение).

1. Что заставляет меня удалять одинарные кавычки и добавлять обратную косую черту, имеет ли этот формат имя или ключевые слова?

2. Можно ли использовать ответ на вопрос 1 в ванильном javascript XMLHttpRequest? Так как я не смог успешно применить свои модификации curl.

var xhr = new XMLHttpRequest();
xhr.open("POST", "myFunctionURL");
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(`{\"name\":\"Jane"}`);
xhr.onreadystatechange = function () {
 if (xhr.readyState === 4) {
   console.log('response: ', JSON.stringify(xhr), ' status: ', xhr.status);
 }
}

Я попытался передать множество параметров в send, включая:

var body = {};
body.name = 'Jane';
*passing body into xhr.send*

var body = `{\"name\",\"Jane\"};
*passing body into xhr.send*

1 Ответ

0 голосов
/ 13 января 2020

Это не Google Cloud Function, это Windows версия команды CURL, которая имеет проблему с одинарными кавычками при публикации полезной нагрузки JSON.

Посмотрите на следующие темы, в которых обсуждаются те же проблемы, но в другом контексте:

https://superuser.com/questions/1016710/how-to-make-a-curl-post-call-in-windows https://superuser.com/questions/1291352/curl-command-runs-in-linux-but-not-windows-2008

...