详解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 相关文章推荐
PHP 与 js的通信(via ajax,json)
Nov 16 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
Jul 15 Javascript
json的前台操作和后台操作实现代码
Jan 20 Javascript
javascript简单实现命名空间效果
Mar 06 Javascript
javascript写的一个模拟阅读小说的程序
Apr 04 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
May 05 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
Jul 28 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
Oct 14 Javascript
canvas知识总结
Jan 25 Javascript
JavaScript瀑布流布局实现代码
May 06 Javascript
Vue2.X 通过AJAX动态更新数据
Jul 17 Javascript
JS实现进度条动态加载特效
Mar 25 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
MySQL连接数超过限制的解决方法
2011/07/17 PHP
php连接mysql数据库
2017/03/21 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
通过代码实例了解Python sys模块
2020/09/14 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
python 装饰器重要在哪
2021/02/14 Python
元旦晚会策划方案
2014/02/18 职场文书
社区维稳工作方案
2014/06/06 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
golang中的空接口使用详解
2021/03/30 Python
Python Parser的用法
2021/05/12 Python