详解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中的事件代理
Nov 06 Javascript
js文本框输入内容智能提示效果
Dec 02 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
Jan 09 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
Dec 25 Javascript
如何使用JS在HTML中自定义字符串格式化
Jul 20 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
Dec 28 Javascript
Bootstrap Table中的多选框删除功能
Jul 15 Javascript
layui点击导航栏刷新tab页的示例代码
Aug 14 Javascript
vue项目中使用scss的方法步骤
May 16 Javascript
jQuery创建折叠式菜单
Jun 15 jQuery
ES6中Set和Map用法实例详解
Mar 02 Javascript
记一次用ts+vuecli4重构项目的实现
May 21 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
在线竞拍系统的PHP实现框架(二)
2006/10/09 PHP
php设计模式  Command(命令模式)
2011/06/17 PHP
PHP培训要多少钱
2017/06/06 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
Python datetime时间格式化去掉前导0
2014/07/31 Python
使用numba对Python运算加速的方法
2018/10/15 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
英国在线药房:Express Chemist
2019/03/28 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
圣诞节活动策划方案
2014/06/09 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
课程设计的心得体会
2014/09/03 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
社团个人总结范文
2015/03/05 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
Golang的继承模拟实例
2021/06/30 Golang
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers