$http
进行通用AJAX调用,这意味着通用可以包括RESTful api和Non-RESTful api。
并且$resource
专门针对该RESTful部分。
近年来,Restful Api盛行是因为URL的组织性更好,而不是由程序员编写的随机URL。
如果我使用RESTful API来构建网址,则可能类似于/api/cars/:carId
。
$resource
数据获取方式
angular.module('myApp', ['ngResource'])
// Service
.factory('FooService', ['$resource', function($resource) {
return $resource('/api/cars/:carId')
}]);
// Controller
.controller('MainController', ['FooService', function(FooService){
var self = this;
self.cars = FooService.query();
self.myCar = FooService.get('123');
}]);
这会给你的资源对象,它是伴随着get
,save
,query
,remove
,delete
自动的方法。
$http
数据获取方式
angular.module('myApp', [])
// Service
.factory('FooService', ['$http', function($http){
return {
query: function(){
return $http.get('/api/cars');
},
get: function(){
return $http.get('/api/cars/123');
}
// etc...
}
了解我们如何需要在RESTFul API上定义每个常用操作。还有一个区别是,$http
返回promise
时$resource
返回对象。也有第三方插件可以帮助Angular处理RESTFul API,例如restangular
如果API类似于/api/getcarsinfo
。我们剩下的就是使用$http
。