Page 165 - AngularJS权威教程
P. 165
15.17 使用 Restangular 145
// GET /users/abc123/inboxes 1
user.getList('inboxes');
});
从上面可以看出,Restangular非常聪明,知道如何根据在Restangular源对象上调用的方法来 2
构造URL。但设置拉取数据的URL是很方便的,特别是当后端不支持纯粹的RESTful API时。
通过向allUrl方法传入一个独立的参数来指定请求的URL: 3
// 搜索的所有URL都将使用
// `http://google.com/`asthebaseUrl 4
var searches =
Restangular.allUrl('one', 'http://google.com/');
// 将发送一个请求到GET http://google.com/
searches.getList(); 5
另外也可以通过oneURL方法针对特定的请求,设置基础URL而不是操作整个请求:
6
var singleSearch =
Restangular.oneUrl('betaSearch', 'http://beta.google.com/1');
// 触发一个请求到GET http://google.com/1 7
singleSearch.get();
8
15.17 使用 Restangular
现在我们已经可以操作Restangular对象了,下面我们来用它发送请求吧。 9
当Restangular将初始化的对象返回给我们后,可以通过几种不同的方法与后端API进行交互。
10
假设我们创建了一个Restangular对象代表公共讨论列表:
var messages = Restangular.all('messages');
11
通过这个对象,可以使用getList()来获取所有信息。getList()方法返回了一个集合,其
中包含了可以用来操作特定集合的方法。
12
// 所有消息都是一个将被resolve成所有消息列表的promise
var allMessages = messages.getList();
13
同样可以使用Restangular对象来创建信息。使用post()方法来创建message对象。
post方法可以接受一个必要参数,参数类型是对象,并向指定的URL发送一个POST请求。 14
我们也可以向请求中添加查询参数和头。
// POST到/messages 15
var newMessage = {
body: 'Hello world'
};
messages.post(newMessage); 16
// 或者我们将在一个元素上调用这个函数
// 以创建嵌套的资源
var message = Restangular.one('messages', 'abc123'); message.post('replies', newMessage); 17
由于Restangular返回promise对象,我们可以调用promise对象上的方法,因此我们可以在
promise对象完成时运行函数。 18