angular之resource

$resource是Angular提供给我们的一个非常好用的服务,它可以创建一个资源对象,我们可以使用它,同支持RESTFUL的服务端进行交互
$resource服务本身就是一个创建资源对象的工厂,返回的$resource对象中包含了同后端进行交互的高层API。

1
2
3
4
5
6
var User = $resource('/api/user/:userId.json',
{
userId:'@id'
}
);
//可以把User对象理解成与RESTFUL后端服务进行交互的接口

$resource API

url(string)
在这里传入一个包含所有参数的,用来定位资源的参数化URL字符串模板(参数以:符为前缀) ,对于URL中的每个参数,都可以通过他们的名字来赋值:

1
2
3
4
$resource('/api/users/:id.:format',{
format:'json',
id:'123'
})

:如果:之前的参数为空(上面例子中的:id),那么URL中的这部分会被压缩为一个.符号

paramDefault(可选,Object)
这个参数包含了发送请求时URL中参数的默认值。对象中的键会与参数名进行匹配。如果我们传入了一个没有在URL设置过的参数,那么它会以普通的查询字符串的形式被发送。

eg: 如果URL字符串具有/api/users/:id这样的签名,并且我们将默认值设置为{id:'123',name:'bob'},那么URL最终会被转换为/api/users/123?name=bob

此外我么可以像上面那样硬编码确定URL参数中的值,也可以将其设置为从一个数据对象中读取的动态值
如果要设置为动态值,需要在值之前加上@字符做为前缀

action(可选 Object)
动作对象是具有自定义动作,并且可以对默认的资源动作进行扩展的hash对象
在这个对象中,对象的键就是自定义动作名,而$http设置对象的值就会对URL中相应的参数进行替换
如下我们在资源上自定义一个新的update动作:

1
2
3
4
5
6
7
8
$resource('/api/users/:id.:format',{
format:'json',
id:'123'
},{
update:{
method:'PUT'
}
})

资源类对象的常用方法:

  1. 基于HTTP GET 方法:

    1. params(object):随请求一起发送的参数,可以是url中的具名参数,也可以是查询参数
    2. successfn:当HTTP请求成功时回调的函数
    3. errorfn:当请求失败时的回调函数

      get(params,successfn,errorfn)
      get方法向指定的URL发送一个GET请求,并期望一个JSON类型的相应,常被用于获取单个资源。

      query(params,successfn,errorfn)
      query向指定的URL发送一个get请求,并期望返回一个JSON格式的资源对象的集合,数组

  2. 基于非HTTP GET 类型的方法:

    1. payload:随请求发送的数据体

      save(params,payload,successfn,errorfn)
      save方法向指定的url发送一个post请求,并用数据体来生成请求体。save()用来在服务器上生成一个行的资源

      delete(params,payload,successfn,errorfn)
      delete方法向指定的url发送一个DELETE请求,并用数据体来生成请求体,被用来在服务器上删除一个实例

      remove(params,payload,successfn,errorfn)
      与delete()方法作用完全相同,存在意义在于delete是保留字,在IE中会导致额外的问题

文章目录
  1. 1. $resource API
  2. 2. 资源类对象的常用方法: