使$ http.get URL的一部分动态生成

时间:2016-05-02 18:36:34

标签: angularjs api http dynamic service

我从API中提取数组,如下所示:

  // in Service....

  return $http.get(
    'http://api.com/team/16110?Authorization=565eaa22251f932b9f000001d50aaf0b55c7477c5ffcdbaf113ebbda'
    ) 

        .success(function(data) { 
          return data; 
        }) 
        .error(function(err) { 
          return err; 
        }); 

这样可以正常工作,但仅适用于URL调用的一个数据数组。我希望能够通过调整URL的一部分来调用其他特定数组 - 16110

我希望能够在此$ http调用中的其他位置使用其他属性的属性。我试过这个:

'http://api.com/team/' + $scope.thisId +'?Authorization=565eaa22251f932b9f000001d50aaf0b55c7477c5ffcdbaf113ebbda'

但这只是打破了服务。

对此有一个相对简单的解决方案吗?我觉得我非常接近,但不能破解它。

更新 - 以下解决方案有效......

1。 SERVICE

    app.factory('DataService', ['$http', function($http) { 

    return {
        getTeamDetailsById: function(teamId) {
            return $http.get('http://api.com/team/' + teamId + '?Authorization=xxxxxx'
        )
    }


    }]);

2。 CONTROLLER

app.controller('NationsController', [
    '$scope',
    'DataService',
    NationsController]);

function NationsController($scope, DataService) {

    self = this;

    DataService.getTeamDetailsById($scope.whichTeam).then(

    function(response) {
    //success callback
    $scope.teamDetails = response.data; 
    }, 

    function(response) {
    //an error has occurred
    });

}

3。 response.data

我期待从此获得一个对象。 API网址很好,我直接尝试了它,它返回数据确定。

2 个答案:

答案 0 :(得分:3)

id从范围传递到服务中:

app.factory("DataService", ["$http", function($http) {
    return {
        getTeamDetailsById: function(teamId) {
            return $http.get('path/to/api' + teamId + '?Auth=xxxx')
        }
    };
}]);

从控制器调用它:

DataService.getTeamDetailsById($scope.teamId).then(function(response) {
    //success callback
    $scope.teamDetails = response.data;
}, function(response) {
    //an error has occurred
});

答案 1 :(得分:0)

此:

'http://api.com/team/' + '$scope.thisId' +'?Authorization=565eaa22251f932b9f000001d50aaf0b55c7477c5ffcdbaf113ebbda'

等于http://api.com/team/$scope.thisId?Authorization=[...],这不是你想要的。删除$scope.thisID周围的引号,如下所示:

'http://api.com/team/' + $scope.thisId +'?Authorization=565eaa22251f932b9f000001d50aaf0b55c7477c5ffcdbaf113ebbda'

如果您已将$scope.thisId设置为要获取的资源ID,则可以使用此功能。