如何获取路由获取请求并从API检索信息?

时间:2016-05-20 15:27:15

标签: javascript angularjs node.js

我正在尝试使用$resource从Angular执行get / query请求到指定的路由,该路由将ping API,然后我应该得到一个结果来自API的对象。

这是一个搜索功能。请参阅此问题的流程:

角度服务:

angular.module('MyApp')
  .factory('Search', function($resource) {
    return $resource('/api/shows/:_search');
  });

控制:

$scope.$watch('searchStr', function (tmpStr)
{
  if (!tmpStr || tmpStr.length == 0)
    return 0;


    // if searchStr is still the same..
    // go ahead and retrieve the data
    if (tmpStr === $scope.searchStr) {   
      Search.query({'search': $scope.searchStr})
      .$promise.then(function(data) {
        $scope.responseData = data;
      })
    }
});

查看:

<input type="text" data-ng-model="searchStr">

<textarea> {{responseData}} </textarea>

的NodeJS:

app.get('api/shows/:search', function(req, res, next) {
  console.log(req, res);
  request.get('http://thetvdb.com/api/GetSeries.php?seriesname=' + req.params.search, function (error, response, body) {
    console.log(error, response, body);
  });
});

有我需要的东西,我需要向'api/shows/:search'做一个获取请求并做一些事情以便从http://thetvdb.com/api/GetSeries.php?seriesname=' + req.params.search获得结果,但我仍然在努力应该如何完成。 search param是来自Angular的字符串,用于转到thetvdb并返回我需要的内容。

以下是一个例子,说明如果你发送带有“all”字样的字符串参数,它应该返回什么:http://www.thetvdb.com/api/GetSeries.php?seriesname=all&language=en

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

至少你的nodejs route必须在响应中返回字符串:

app.get('api/shows/:search', function(req, res, next) {
  request.get('http://thetvdb.com/api/GetSeries.php?seriesname=' + req.params.search, function (error, response, body) {
    console.log(error, response, body);
    res.end(body);
  });
});