详解AngularJs中$resource和restfu服务端数据交互


Posted in Javascript onSeptember 21, 2016

$resource

创建一个resource对象的工厂函数,可以让你安全的和RESFUL服务端进行数据交互。

安装

ngResource模块是一个可选的angularjs模块,如果需要使用,我们要单独引用js

<script type="text/javascript" src="/javascripts/angular-resource.js">

$resource应用

我们并不是直接通过$resource服务本身同服务器通信,$resource是一个创建资源对象的工厂,用来创建同服务端交互的对象。

var User = $resource('/api/users/:userId', {userId:'@id'});

返回的User对象包含了同后端服务进行交互的方法,我们可以把User对象理解成同RESTFul的后端服务进行交互的接口。

该对象包含两个get类型的方法已经三个非get类型的方法。

User.get({id:'123'}, successFn, errorFn);

该方法向url发送一个get请求,并期望一个json类型的响应。这里会向/api/users/123发送一个请求,successFn处理请求成功响应,errorFn处理错误。

User.query(params, successFn, errorFn)

get()方法使用类似,一般用来请求多条数据。

save(params, payload, successFn, errorFn);

save方法会发起一个post请求,params参数用来填充url中变量,对象payload会作为请求体进行发送

delete(params, payload, successFn,errorFn)

delete方法一个DELETE请求,payload作为消息体进行发送

remove(params, payload, successFn, errorFn)

同delete类似,不同的是remove用来移除多条数据

通过$resource生成的对象来同服务器进行交互的时候,我们看可以定义处理成功以及处理失败的函数,这些函数接受的参数不仅仅是简单的对象,而是经过包装之后的对象,会被添加$save() , $remove() , $delete三个方法,可以直接调用这三个方法来后服务端进行交互。

User.get({id:'123'}, function(user){
 user.name = 'changeAnotherName';
 user.$save();
//这里等价于User.save({id:'123'},{name:'changeAnotherName'})
});

$resource扩展

$resource对常见的五种请求进行封装,我们还可以对$resource进行扩展。

这里要扩展$resource我们需要传入第三个参数,该参数是一个对象。

$resource('/api/users',{},{
 sendEmail:{
  method:'',
  url:'',
  params:{},
  isArray:boolean,
  transformRequest:函数或者函数数组
  transformResponse:函数或者函数数组
  cache:布尔型或缓存对象
  timeout:数值或promise对象
  withCredentials:布尔类型
  responseType:字符串,用来设置XMLHttpRequestResponseType属性
 }
})

我们也可以将$resource服务当做自定义服务的基础。

angular.module('testApp', ['ngResource']),factory('UserService',['$resource', function($resource){
  return $resource(url,{},{});
}]);

总结

以上就是关于AngularJs中$resource和restfu服务端数据交互的全部内容,希望这篇文章对大家学习或者使用AngularJS能有所帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
JavaScript 学习笔记(十五)
Jan 28 Javascript
JS获取当前网址、主机地址项目根路径
Nov 19 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
Jun 27 Javascript
Javascript基础教程之数据类型转换
Jan 18 Javascript
JS组件中bootstrap multiselect两大组件较量
Jan 26 Javascript
Bootstrap精简教程中秋大放送
Sep 15 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
JS获取数组中出现次数最多及第二多元素的方法
Oct 27 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
Jan 24 Javascript
JS实现select选中option触发事件操作示例
Jul 13 Javascript
vue 表单验证按钮事件交由父组件触发的方法
Dec 17 Javascript
javascript将扁平的数据转为树形结构的高效率算法
Feb 27 Javascript
AngularJS通过$http和服务器通信详解
Sep 21 #Javascript
JavaScript 拖拽实例代码
Sep 21 #Javascript
Angularjs中controller的三种写法分享
Sep 21 #Javascript
jQuery中Find选择器用法示例
Sep 21 #Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
Sep 21 #Javascript
Angular2 (RC5) 路由与导航详解
Sep 21 #Javascript
Angular2 (RC4) 路由与导航详解
Sep 21 #Javascript
You might like
php目录操作实例代码
2014/02/21 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
初识ThinkPHP控制器
2016/04/07 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
python实现读取命令行参数的方法
2015/05/22 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
2018/01/11 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
教师节活动主持词
2014/04/02 职场文书
《白鹅》教学反思
2014/04/13 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
教师工作能力自我评价
2015/03/04 职场文书
幼师自荐信范文
2015/03/06 职场文书
张思德观后感
2015/06/09 职场文书
Python入门学习之类的相关知识总结
2021/05/25 Python