详解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 Archive Network 集合
May 12 Javascript
有关JavaScript的10个怪癖和秘密分享
Aug 28 Javascript
js Function类型
Dec 04 Javascript
php析构函数的具体用法小结
Mar 11 Javascript
JSON与js对象序列化实例详解
Mar 16 Javascript
JS简单验证上传文件类型的方法
Apr 17 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 jQuery
最适应的vue.js的form提交涉及多种插件【推荐】
Aug 27 Javascript
vue+php实现的微博留言功能示例
Mar 16 Javascript
如何在JavaScript中谨慎使用代码注释
Jun 21 Javascript
Vue实现点击箭头上下移动效果
Jun 11 Javascript
80行代码写一个Webpack插件并发布到npm
May 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
晶体管单管来复再生式收音机
2021/03/02 无线电
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
js切换div css注意的细节
2012/12/10 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
护理个人求职信范文
2014/01/08 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
医学生求职自荐书
2014/06/12 职场文书
公司踏青活动方案
2014/08/16 职场文书
转让协议书
2015/01/27 职场文书
会议通知
2015/04/15 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers