Page 162 - AngularJS权威教程
P. 162
142 第 15 章 同外界通信:XHR 和服务器通信
如果我们使用的服务器要求在URL中输入端口号,例如http://localhost:3000,
我们必须对 URL 进行转义。这种情 况下 URL 规则看起来是 这样的 :
$resource('http://localhost\\:3000/api/users/:id.json')。
paramDefaults(可选,对象)
第二个参数中包含了发送请求时URL中参数的默认值。对象中的键会与参数名进行匹配。如
果我们传入了一个没有在URL中设置过的参数,那它会以普通的查询字符串的形式被发送。
例如,如果URL字符串具有/api/users/:id这样的签名,并且我们将默认值设置为{id:
'123', name: 'Ari' },那么URL最终会被转换成/api/users/123?name=Ari。
这里可以像上面一样硬编码一个默认值来传入一个静态值,也可以设置它从一个数据对象中
读取动态值。
如果要设置动态值,需要在值之前加上@字符作为前缀。
actions(可选,对象)
动作对象是具有自定义动作,并且可以对默认的资源动作进行扩展的hash对象。
在这个对象中,对象的键就是自定义动作的名字,而$http设置对象的值会对URL中相应的
参数进行替换。
例如,我们可以用如下形式在资源上定义一个新的update动作:
$resource('/api/users/:id.:format', {
format: 'json',
id: '123'
}, {
update: {
method: 'PUT'
}
});
15.13 使用 Restangular
尽管AngularJS本身非常强大,可通过将所有的重要数据打包在应用内部而形成一个独立的
应用,但这样就会错过这个框架最优秀的功能之一:和外部世界通信的能力。
本节会深入讨论一个非常不可思议的、设计良好的库:Restangular。
15.14 Restangular 简介
Restangular是一个专门用来从外部读取数据的AngularJS服务。
为什么不用$http或$resource?尽管$http和$resource是AngularJS的内置服务,但这两个
服务在某些方面的功能是有限的。Restangular通过完全不同的途径实现了XHR通信,并提供了良
好的使用体验。