详解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 相关文章推荐
Jquery 例外被抛出且未被接住原因介绍
Sep 04 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
Dec 29 Javascript
在页面加载完成后通过jquery给多个span赋值
May 21 Javascript
jQuery实现Twitter的自动文字补齐特效
Nov 28 Javascript
node.js中的console.info方法使用说明
Dec 09 Javascript
js带缩略图的图片轮播效果代码分享
Sep 14 Javascript
JavaScript数组操作函数汇总
Aug 05 Javascript
prototype与__proto__区别详细介绍
Jan 09 Javascript
微信小程序实现弹出菜单功能
Jun 12 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
Jun 19 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
Aug 16 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
Oct 17 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学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
php格式化日期实例分析
2014/11/12 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
详解JavaScript的变量和数据类型
2015/11/27 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
基于zepto.js实现登录界面
2017/10/09 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
Python下Fabric的简单部署方法
2015/07/14 Python
python直接访问私有属性的简单方法
2016/07/25 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
Python基于locals返回作用域字典
2020/10/17 Python
.net笔试题
2014/03/03 面试题
优秀应届毕业生自荐信
2013/11/16 职场文书
幼儿园老师寄语
2014/04/03 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
考试没考好检讨书
2015/05/06 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
读书笔记怎么写
2015/07/01 职场文书
工作会议简报
2015/07/20 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server