Как использовать AngularJS $ http для извлечения данных, возвращаемых конечной точкой ExpressJS? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть маршрут ExpressJS, как показано ниже:

var exec = require('child_process').exec;

app.get('/someURL', function (req, res) {
    exec('cp file1 file2', (err, stdout, stderr) => {
        if (err) {
            // node couldn't execute the command
            return;
        }

        // the *entire* stdout and stderr (buffered)
        console.log('stdout: ' + stdout);
        console.log(stderr);

    });
    return stdout;
  })

Это в основном для запуска команды CLI, когда пользователь идет по указанному маршруту в веб-приложении.

В моем AngularJSконтроллер У меня есть следующая функция:

function getData() {

    let deferred = this.$q.defer();

    this.$http({
      method: 'GET',
      url: '/someURL'
    }).then((response) => {
      deferred.resolve(response);
    }, (error) => {
      deferred.reject(error);
    });

    return deferred.promise;
}


this.getData().then(function(response) {
      console.log(response);
   }).catch(function(err) {
     console.log(err, err.stack);
   });

Когда я запускаю приложение, я получаю HTML-код в качестве ответа на console.log(response) вместо stdout. Как мне это исправить?

1 Ответ

0 голосов
/ 06 ноября 2019
app.get('/someURL', function (req, res) {
    // Here do the processing that you need to do
res.send('response');
  })

На вашем сервере expressJS вы перехватываете запрос, но ничего не отправляете обратно. Вы должны специально отправить что-то обратно, используя объект res из параметра funtion. Вы также можете добавить http коды состояния, например

res.status('200').send(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...