$http
进行通用 AJAX 调用,其中一般意味着它可以包括RESTful api 和非 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上定义每个常见操作。还有一个区别是$http
返回promise
while$resource
返回一个对象。还有一些第三方插件可以帮助 Angular 处理RESTFul API,比如restangular
如果 API 类似于/api/getcarsinfo
. 我们剩下的就是使用$http
.