我正在开发有角度的网页应用。我有这个控制器需要调用restful api来对用户进行一些操作。
早些时候我在想定义一个有一些方法的服务:getAllUser(),getUser(id),saveUser(),deleteUser()。这些方法将使用ngResource来调用rest apis。 但是当我看到这些方法时,在我看来,我只是包装ngResource并公开他的一些低级方法:query(),get(),save(),delete()。
有人可以分享一些关于如何设计使用ngResource从服务器获取数据的公共服务或工厂或提供商的经验吗?
答案 0 :(得分:3)
我自己一直在做一个有角度的项目。我手动构建了一个工厂,然后最后使用JBoss Forge进行第二次尝试,并以非常好的方式为我构建内容,这就是它的样子:
angular.module('myApp').factory('myResource', function($resource){
var urlBase = '/rest/resources';
var resource = $resource(urlBase + '/:RsvpId',{RsvpId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
return resource;
});
这就是它的全部内容,然后当您想要调用它时,您会执行以下操作:
$scope.save = function() {
var successCallback = function(data,responseHeaders){
var id = locationParser(responseHeaders);
$location.path('/Resources/edit/' + id);
$scope.status = 'success';
};
var errorCallback = function(data, status, headers, config) {
$scope.status = 'failure';
$scope.statusMessage = 'Saving your resource failed: ' + $scope.errorMessage;
};
myResource.save($scope.resource, successCallback, errorCallback);
};
或者做一个get,你在方法中有这一行:
myResource.get({ResourceId:$routeParams.ResourceId}, successCallback, errorCallback);
或
resource.$remove(successCallback, errorCallback);
希望有所帮助。
答案 1 :(得分:2)
让我解释一下ngResource ......
ngResource是来自AngularJs的一项服务,它使用$ http服务的低杠杆,所以当你想使用RESTFul资源时,它非常简单。这是我的例子:
myAppModule.factory('User', ['$resource', function($resource) {
return $resource('/user/:userId'}
]);
那么上面的代码是做什么的?这是创建一个返回资源的服务,url已映射,因此当您注入并调用此服务时,您会收到一个带有某些方法的对象:“GET”,“POST”,“PUT”,“DELETE”...示例:
var users = User.query();
变量“users”,接收所有用户(加上它接收一些资源功能,如save,因为“users”变量仍然是资源对象),就像你发出这个请求(... / user /),好?你所要做的就是调用资源,这非常简单。