Как получить доступ к полезной нагрузке ответа Fetch - PullRequest
0 голосов
/ 04 мая 2020

Я отправляю запрос на выборку в Google Script и хочу узнать, как получить полезную нагрузку ответа.

Код на стороне клиента:

fetch(url, {
      method: 'POST',
      body: JSON.stringify({ type: 'proposal' }),
      headers: {
        'Content-Type': 'text/plain;charset=utf-8',
               }
 }).then( (response) => {
      console.log("success:", response);
 }).catch(err => {
      console.log("Error:" + err);
 });

И на серверная часть (GAS) У меня есть это:

function doPost(e) { 

  return ContentService.createTextOutput('It works!'); // Please add this.
}

Код успешно отправляет запрос на выборку и, просматривая полезную нагрузку с помощью Firefox Dev Tools, я получаю ожидаемый ответ ('Это работает!').

Однако в моем журнале я получаю объект ответа. Как получить доступ к фактической полезной нагрузке (ContentService TextOutput, возвращаемой сценарием).

Ответы [ 3 ]

2 голосов
/ 04 мая 2020

Взгляните на документы "Using Fetch" на MDN: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

Ответ от fetch является объектом ответа, который включает в себя ряд методов, которые вы Можно позвонить, чтобы получить проанализированный ответ. Каждый из них возвращает обещание, и вам нужно будет вызвать правильное в зависимости от типа данных в ответе.

Например:

fetch('/url', {
  method: 'POST'
  ...
}).then(res => res.text())
  .then(text => {
    ...here is the text response
  })

Или, если ваш ответ JSON:

fetch('/url', {
  method: 'POST',
  ...
}).then(res => res.json())
  .then(json => {
    ...here is the JSON response
  })
2 голосов
/ 04 мая 2020

Я думаю, что вы ищете response.text()

fetch(...).then(response => response.text()).then(text => console.log(text));
0 голосов
/ 04 мая 2020

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

let makeRequest = function(URL){
    return new Promise(function(callback){
        fetch(URL).then(function(res){
            res.text().then(callback);
        });
    });
}

Использование с ожиданием :

let text = await makeRequest('https://stackoverflow.com');

Старая школа:

makeRequest('https://stackoverflow.com').then(function(text){
    // Do stuff with text
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...