首页 > Angular中$resource和$http的区别

Angular中$resource和$http的区别

$resource和$http都是用来处理http请求的,但是具体又有哪些区别呢?

$resource

var User = $resource('api/user/:userId');
User.get({userId:123}, function(data) {
    ...
});

$http

var req = {
 method: 'GET',
 url: 'http://example.com/api/user/:userId',
}
$http(req).then(function(data){
    ...
})

本质上功能都是一样的,都是基于XMLHttpRequest和服务器交互的服务。

不同的是$resource是对$http更高层次的抽象,$resource依赖于$http,也就是说$resource是在$http的基础上开发的。

基本上你可以把$http等同于jQuery的$.ajax,和$.ajax类似,$http除了有$http方法为,也有快捷方法$http.get$http.post$http.put等快捷方法,还有$http(url)返回的是一个Promise。

$http通常用于和RESTful server-side交互,要求接口RESTful话,'$resource(url)'返回的不Promise,也是一个资源对象,你可以对一个资源对象进行get、query、save、delete等操作。

$resouce用法示例:

var User = $resource('/user/:userId', {userId:'@id'}); // 返回一个资源对象

/* 操作资源 */
User.get({userId:123}, function(user) {
  // do something
});

/* 如果想用Promise风格 */
User.get({userId:123}).$promise.then(function(user) {
  $scope.user = user;
});
【热门文章】
【热门文章】