$http进行通用AJAX调用,其中通用意味着它可以包括RESTful api和Non-RESTful api。
并且$resource专门用于那个RESTful部分。
Restful Api之所以在近几年流行起来,是因为 url 组织得更好,而不是程序员编写的随机 url。
如果我使用RESTful API来构造 url,它将类似于/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上的每个常见操作。还有一个区别是return while$http返回一个对象。还有第三方插件可以帮助 Angular 处理RESTFul API,比如restangularpromise$resource
如果 API 类似于/api/getcarsinfo. 留给我们的就是使用$http.