Как мне вызвать внешние веб-сервисы из моего приложения NODEJS GAE - PullRequest
0 голосов
/ 09 января 2019

Я новичок в NODE JS + GAE, поэтому, пожалуйста, прости вопрос новичка.

Я хочу, чтобы мое приложение обслуживало вызов REST, который объединит результаты вызовов других внешних API (третьих сторон - нет GAE)

У меня работает этот javascript с моего ПК, но при развертывании в GAE появляется ошибка «502 Bad Gateway» (в моем браузере). Я не могу найти ничего в журналах GAE, чтобы помочь объяснить эту ошибку. Обратите внимание, что мой вызов REST работает (т. Е. GAE принимает вызов), но не может выполнить исходящий вызов на внешний веб-сайт.

Обратите внимание, что здесь приведен пример кода JS NODE, который не выполняется (я звоню "/ test"):

const express = require('express');

var http = require('http');

var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;     

const app = express();   

// [START hello_world] 


app.get('/test', (req, res) => {

const Http = new XMLHttpRequest();

const url='https://www.google.com';

Http.open("GET", url);

Http.send();

Http.onreadystatechange=(e)=>{

console.log(Http.responseText)

}});



// [END hello_world]



if (module === require.main) {

  // [START server]

  // Start the server

  const server = app.listen(process.env.PORT || 8080, () => {

    const port = server.address().port;

    console.log(`App listening on port ${port}`);

  });

  // [END server]

}



module.exports = app;

Требуется некоторое время, чтобы запустить из моего браузера (то есть минуту), затем я получаю ошибку «502 Bad Gateway». Это межсайтовая проблема, т. Е. Останавливает ли GAE вызовы веб-служб из приложений NODE JS на другие сайты?

1 Ответ

0 голосов
/ 09 января 2019

Проблема в том, что ваш запрос истек, потому что вы не отправляете ответ, указывающий, что запрос выполнен.

Чтобы решить эту проблему, вам нужно будет вернуть ответ на ваш обработчик /test, например, вы можете добавить это:

res.status(200).send("ok").end();

Возвращает 200 OK ответ на запрос, указывающий, что он был правильно обработан.

Это изменение в вашем /test обработчике, вероятно, должно быть добавлено следующим образом:

app.get('/test', (req, res) => {
        const Http = new XMLHttpRequest();
        const url='https://www.google.com';
        Http.open("GET", url);
        Http.send();
        Http.onreadystatechange=(e)=>{
                console.log(Http.responseText)
                // Return response to '/test' handler request 
                res.status(200).send("ok").end();
        }

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