在AngularJS中调用Web服务(承诺)

时间:2017-01-23 21:54:19

标签: angularjs rest angularjs-controller angularjs-factory angularjs-http

AngularJS:1.4.X
场景1:工作正常
场景2:在xhr.send行引发404错误(isUndefined(post)?null:post);在angular.js中

我正在尝试为我们现有的应用程序添加内置角度缓存,正如我在场景1中提到的,我们在工厂'restFactory'中使用rest调用并将工厂注入到控制器'bookController'中,承诺得到解决并且数据加载正常

工厂:restFactory

(function () {
    "use strict";
    angular.module('myApp').factory("restFactory",['$http','confi', function($http,config){

    function getBooks (){  
       return $http.get(config.serverName+"bookshelf/rest/books/data/geRestBooks");
    }
    return {
        getBooks : getBooks
    };
}]);
})();

Controller:bookController

   $scope.getComicbooks = function() {
        restFactory.getBooks().then(function(response) {        
            $scope.names = response.data;
        }, function(error) {
            $scope.error = error;
            $scope.names = [];
        });
    };

现在,在方案2中,我将工厂中的服务调用更改为具有更多详细信息的对象。但是我在解决承诺时从控制器获得异常(我只添加了更改后的代码)

function getBooks (){  
   return $http.get({
   cache: true,
   method: 'GET',
   url : config.serverName+"bookshelf/rest/books/data/geRestBooks"
   });
}

错误:angular.js:10765获取http://127.0.0.1:53814/views/[object%20Object] 404(未找到)

网络标签:
enter image description here 在场景#1中,这将是一个方法调用getBooks

1 个答案:

答案 0 :(得分:3)

如果您要指定方法,那么您应该只使用$http构造函数方法,而不是get方法。

而不是

function getBooks (){  
   return $http.get({
      cache: true,
      method: 'GET',
      url : config.serverName+"bookshelf/rest/books/data/geRestBooks"
   });
}

尝试

function getBooks (){  
   return $http({
      cache: true,
      method: 'GET',
      url : config.serverName+"bookshelf/rest/books/data/geRestBooks"
   });
}