详解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中String类的replace函数
Sep 22 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
Jul 17 Javascript
JavaScript设置body高度为浏览器高度的方法
Feb 09 Javascript
15个常用的jquery代码片段
Dec 19 Javascript
jQuery基于cookie实现的购物车实例分析
Dec 24 Javascript
canvas绘制的直线动画
Jan 23 Javascript
jQuery为某个div加入行样式
Jun 09 jQuery
用javascript获取任意颜色的更亮或更暗颜色值示例代码
Jul 21 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
js 判断一个数字是不是2的n次方幂的实例
Nov 26 Javascript
vue中添加mp3音频文件的方法
Mar 02 Javascript
vue使用代理解决请求跨域问题详解
Jul 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
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
Python中关于使用模块的基础知识
2015/05/24 Python
在Django中限制已登录用户的访问的方法
2015/07/23 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
生产部经理岗位职责
2013/12/16 职场文书
会计专业毕业生自荐信范文
2013/12/20 职场文书
外贸专业求职信
2014/03/09 职场文书
给孩子的新年寄语
2014/04/08 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书