详解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中常用的55个经典技巧
Aug 12 Javascript
由JavaScript技术实现的web小游戏(不含网游)
Jun 12 Javascript
使用js获取地址栏中传递的值
Jul 02 Javascript
判断文档离浏览器顶部的距离的方法
Jan 08 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
Mar 05 Javascript
jquery+ajax请求且带返回值的代码
Aug 12 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
Jun 13 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
详解json串反转义(消除反斜杠)
Aug 12 Javascript
vue的keep-alive用法技巧
Aug 15 Javascript
jquery简易手风琴插件的封装
Oct 13 jQuery
基于Vant UI框架实现时间段选择器
Dec 24 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
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
php压缩文件夹最新版
2018/07/18 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
jQuery 使用手册(三)
2009/09/23 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
利用python开发app实战的方法
2019/07/09 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
Python占用的内存优化教程
2019/07/28 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
如何用python 操作zookeeper
2020/12/28 Python
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
详解Canvas事件绑定
2018/06/27 HTML / CSS
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
浅谈react路由传参的几种方式
2021/03/23 Javascript
学校评语大全
2014/05/06 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
中学教师读书笔记
2015/07/01 职场文书
Mysql中mvcc各场景理解应用
2022/08/05 MySQL