Tom*_*Tom 256 javascript web-services angularjs
我有一些我想打电话的网络服务.$resource
或者$http
,我应该使用哪一个?
$resource
:https://docs.angularjs.org/api/ngResource/service/$resource
$http
:https://docs.angularjs.org/api/ng/service/$http
在我阅读上面两个API页面后,我迷失了.
能否请您用简单的英语向我解释有什么区别,我应该在什么情况下使用它们?如何构造这些调用并将结果正确读入js对象?
blu*_*llu 210
我认为其他答案虽然正确,但并未完全解释问题的根源:REST
是其中的一部分HTTP
.这意味着可以通过所有可以完成的事情REST
来完成,HTTP
但并非所有可以通过的HTTP
方式完成REST
.这就是内部$resource
使用的原因$http
.
那么,什么时候互相使用?
如果您只需要REST
,即尝试访问RESTful
Web服务,$resource
那么就可以非常轻松地与该Web服务进行交互.
相反,如果您正在尝试访问不是RESTful
Web 服务的ANYTHING ,那么您将不得不继续使用$http
.请记住,您也可以访问网络RESTful
服务$http
,这将比使用它更麻烦$resource
.这是大多数人通过使用jQuery.ajax
(相当于Angular的$http
)在AngularJS之外进行的方式.
Ben*_*esh 167
$http
用于通用AJAX.在大多数情况下,这就是你将要使用的.随着$http
你将要作出GET
,POST
,DELETE
手动键入和处理他们在自己返回的对象调用.
$resource
包装$http
以在RESTful Web API方案中使用.
概而言之:RESTful Web服务将与一个端点为基于HTTP的方法,如与数据类型进行不同的处理数据的服务类型GET
,POST
,PUT
,DELETE
,等于是用一个$resource
,你可以调用一个GET
获取资源作为JavaScript对象,然后改变它并用a发送回来POST
,甚至删除它DELETE
.
......如果这是有道理的.
Qia*_*ang 41
$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');
}]);
Run Code Online (Sandbox Code Playgroud)
这会给你的资源对象,它是伴随着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...
}
Run Code Online (Sandbox Code Playgroud)
了解我们如何在RESTFul API上定义每个常见操作.还一个区别是,$http
返回promise
而$resource
返回的对象.还有第三方插件可以帮助Angular处理RESTFul API,例如restangular
如果API是这样的/api/getcarsinfo
.所有留给我们的都是使用$http
.
Mat*_*iba 30
我想答案更多地取决于谁,你是在你写代码的时间.如果您是Angular的新手,请使用$http
,直到您知道为什么需要$resource
.直到你有关于如何$http
阻止你的具体经验,并且你理解$resource
在代码中使用的含义,坚持下去$http
.
这是我的经验:我开始了我的第一个Angular项目,我需要向RESTful接口发出HTTP请求,所以我做了你现在正在做的同样的研究.根据我在这样的SO问题中的讨论,我选择了$resource
.这是一个错误,我希望我可以撤消.原因如下:
$http
例子丰富,有用,通常只是你需要的.清楚的$resource
例子是稀缺的,并且(根据我的经验)很少你需要的一切.对于Angular新手,你不会意识到你选择的含义,直到后来,当你被困在文档上并且生气时你找不到有用的$resource
例子来帮助你.$http
对于你正在寻找的东西,可能是一对一的心理地图.您不必学习新概念来理解您的成就$http
.$resource
带来了很多细微差别,你还没有心理地图.$http
返回一个承诺并且.then
能够,所以它适合你正在学习的关于Angular和承诺的新事物.$resource
,它不会直接回应承诺,使你对Angular基本原理的初步把握变得复杂化.$resource
功能强大,因为它会压缩RESTful CRUD调用的代码以及输入和输出的转换.如果您厌倦了反复编写代码来处理$http
自己的结果,那就太棒了.对于其他任何人来说,$resource
添加一个语法和参数传递的神秘层,令人困惑.我希望我在3个月前认识我,并且我会强调告诉自己:"坚持$http
孩子.这很好."
spa*_*kli 24
我认为重要的是要强调$ resource期望对象或数组作为服务器的响应,而不是原始字符串.因此,如果您将原始字符串(或除对象和数组之外的任何内容)作为响应,则必须使用$ http
当谈到选择$http
或从$resource
技术上讲,没有正确或错误的答案本质上都会做同样的事情.
目的$resource
是允许您传入模板字符串(包含占位符的字符串)以及参数值.$resource
将使用作为对象传递的参数值替换模板字符串中的占位符.这在与RESTFul数据源交互时非常有用,因为它们使用类似的原则来定义URL.
什么$http
是执行异步HTTP请求.
归档时间: |
|
查看次数: |
82102 次 |
最近记录: |