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

相关文章

  • highcharts 在angular中的使用示例代码

    highcharts 在angular中的使用示例代码

    本篇文章主要介绍了highcharts 在angular中的使用示例代码,非常具有实用价值,需要的朋友可以参考下
    2017-09-09
  • angular中ui calendar的一些使用心得(推荐)

    angular中ui calendar的一些使用心得(推荐)

    下面小编就为大家带来一篇angular中ui calendar的一些使用心得(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • AngularJS中实现动画效果的方法

    AngularJS中实现动画效果的方法

    本文主要介绍AngularJS 动画,这里对动画的资料详细介绍并附有效果图和代码实例,有需要的小伙伴参考下
    2016-07-07
  • Angularjs过滤器实现动态搜索与排序功能示例

    Angularjs过滤器实现动态搜索与排序功能示例

    这篇文章主要介绍了Angularjs过滤器实现动态搜索与排序功能,涉及AngularJS过滤器相关搜索、查询、排序操作技巧,需要的朋友可以参考下
    2017-12-12
  • 详解Angular结构型指令模块和样式

    详解Angular结构型指令模块和样式

    本文主要介绍了Angular的结构性指令模块和样式,对此感兴趣的同学,可以参考下。
    2021-05-05
  • Angular CLI发布路径的配置项浅析

    Angular CLI发布路径的配置项浅析

    这篇文章主要给大家介绍了关于Angular CLI发布路径的配置项的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 详解AngularJs HTTP响应拦截器实现登陆、权限校验

    详解AngularJs HTTP响应拦截器实现登陆、权限校验

    本篇文章主要介绍了AngularJs HTTP响应拦截器实现登陆、权限校验,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • 解决angularjs WdatePicker ng-model的问题

    解决angularjs WdatePicker ng-model的问题

    今天小编就为大家分享一篇解决angularjs WdatePicker ng-model的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Angular之指令Directive用法详解

    Angular之指令Directive用法详解

    本篇文章主要介绍了Angular之指令Directive系列详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 详解angular中如何监控dom渲染完毕

    详解angular中如何监控dom渲染完毕

    AngularJs是Google开源的前端JS框架。使用AngularJs, 我们能够容易地、健壮的开发出类似于Gmail一样的单页Web应用。这篇文章主要介绍了详解angular中如何监控dom渲染完毕,有兴趣的可以了解一下。
    2017-01-01

最新评论