为了账号安全,请及时绑定邮箱和手机立即绑定

AngularJS $ http和$ resource

/ 猿问

AngularJS $ http和$ resource

德玛西亚99 2020-02-04 14:40:24

我有一些要调用的Web服务。$resource或$http,我应该使用哪一个?


$resource:https : //docs.angularjs.org/api/ngResource/service/$resource


$http:https : //docs.angularjs.org/api/ng/service/$http


阅读以上两个API页面后,我迷路了。


您能用简单的英语给我解释一下有什么区别,在什么情况下我应该使用它们?如何构造这些调用并将结果正确读入js对象?


查看完整描述

3 回答

?
绝地无双

$http用于通用AJAX。在大多数情况下,这是您要使用的。随着$http你将要作出GETPOSTDELETE型手动调用和处理他们回到你自己的对象。

$resource包装$http以用于RESTful Web API场景。


概而言之:RESTful Web服务将与一个端点为基于HTTP的方法,如与数据类型进行不同的处理数据的服务类型GETPOSTPUTDELETE,等于是用一个$resource,你可以调用一个GET获取资源作为JavaScript对象,然后对其进行更改并使用,然后将其发送回POST,甚至使用删除它DELETE

...如果有道理。


查看完整回答
反对 回复 2020-02-04
?
摇曳的蔷薇

我认为其他答案虽然正确,但并不能完全解释问题的根源:REST是的子集HTTP。这意味着可以通过完成的所有操作REST都可以通过完成,HTTP但是不能通过完成的所有内容都可以通过HTTP完成REST。这就是为什么在内部$resource使用$http

那么,何时互相使用?

如果您需要的只是REST,也就是说,您正在尝试访问RESTfulWeb服务,$resource则将使其与该Web服务进行交互变得非常容易。

相反,如果您尝试访问不是RESTfulWeb 服务的任何内容,则必须使用$http。请记住,您还可以RESTful通过来访问Web服务$http,这将比使用麻烦得多$resource。这是大多数人在AngularJS之外通过使用jQuery.ajax(等效于Angular的$http)进行此操作的方式。


查看完整回答
反对 回复 2020-02-04
?
至尊宝的传说

$http使得通用的AJAX调用,其中一般意味着它可以包括基于REST的 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时$resource返回对象。也有第三方插件可以帮助Angular处理RESTFul API,例如restangular


如果API类似于/api/getcarsinfo。我们剩下的就是使用$http。


查看完整回答
反对 回复 2020-02-04

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信