详解AngularJs中$resource和restfu服务端数据交互

 更新时间:2016年09月21日 14:30:46   投稿:daisy  
之前小编和大家分享过使用$http同服务器进行通信,但是功能上比较简单,angularjs还提供了另外一个可选的服务$resource,使用它可以非常方便的同支持restful的服务单进行数据交互。下面来一起看看吧。

$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能有所帮助,如果有疑问大家可以留言交流。

相关文章

  • Bootstrap + AngularJS 实现简单的数据过滤字符查找功能

    Bootstrap + AngularJS 实现简单的数据过滤字符查找功能

    这篇文章主要介绍了 Bootstrap + AngularJS 实现简单的数据过滤字符查找功能,代码简单易懂,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2017-07-07
  • ANGULARJS中用NG-BIND指令实现单向绑定的例子

    ANGULARJS中用NG-BIND指令实现单向绑定的例子

    这篇文章主要介绍了ANGULARJS中用NG-BIND指令实现单向绑定的例子,本文简单介绍AngularJS框架后,用一个实例演示{{}}插值法和ng-bind指令的使用,需要的朋友可以参考下
    2014-12-12
  • 在 Angular 中使用懒加载路由的方法

    在 Angular 中使用懒加载路由的方法

    延迟加载是一种限制加载用户当前需要的模块的方法,这可以提高应用程序的性能并减小初始捆绑包大小,在本文中,您学习了如何在 Angular 应用程序中使用惰性加载路由,本文分步骤讲解的非常详细,感兴趣的朋友一起看看吧
    2024-02-02
  • angularjs学习笔记之三大模块(modal,controller,view)

    angularjs学习笔记之三大模块(modal,controller,view)

    本文给大家记录的是angularjs的三大模块(modal,controller,view)的使用说明,方便初学者能够顺利的学习angularjs.
    2015-09-09
  • AngularJS入门教程之AngularJS表达式

    AngularJS入门教程之AngularJS表达式

    AngularJS应用表达式是纯javascript表达式,并输出它们被使用的数据在那里。本文给大家介绍AngularJS入门教程之AngularJS表达式,对angularjs表达式相关知识感兴趣的朋友一起学习吧
    2016-04-04
  • Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程

    Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程

    在Angular的原生指令中有这几个指令用来控制元素的展示与否,ng-show/ng-hide/ng-if和ng-switch。在angular性能优化中,我们也常常会用到它。这篇文章主要给大家介绍了在Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程,需要的朋友可以参考。
    2017-05-05
  • 详解AngularJS ng-class样式切换

    详解AngularJS ng-class样式切换

    本篇文章主要介绍了详解AngularJS ng-class样式切换,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • AngularJS实现注册表单验证功能

    AngularJS实现注册表单验证功能

    这篇文章主要为大家详细介绍了AngularJS实现注册表单验证功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 简述AngularJS的控制器的使用

    简述AngularJS的控制器的使用

    这篇文章主要介绍了AngularJS的控制器的使用,文中给出了具体的用于HTML中的对象示例,需要的朋友可以参考下
    2015-06-06
  • AngularJS ng-controller 指令简单实例

    AngularJS ng-controller 指令简单实例

    本文主要介绍AngularJS ng-controller 指令,这里对ng-controller指令资料的整理,并附代码示例和效果图,有需要的朋友看下
    2016-08-08

最新评论