Page 170 - AngularJS权威教程
P. 170
150 第 15 章 同外界通信:XHR 和服务器通信
what:所请求的数据模型;
url:所请求的相对URL。
angular.module('myApp', ['restangular'])
.config(function(RestangularProvider) {
RestangularProvider.setRequestInterceptor(function(elem, operation, what) {
if (operation === 'put') {
elem._id = undefined;
return elem;
}
return elem;
});
});
5. 自定义字段
Restangular支持自定义字段,这对与非服务器通信非常有用,例如,同MongoDB数据库进行通
信,在这种场景中id字段不会映射到真的id上,在MongoDB中id字段实际上会映射到_id.$oid上。
angular.module('myApp', ['restangular'])
.config(function(RestangularProvider) {
RestangularProvider.setRestangularFields({
id: '_id.$oid'
});
});
6. 通过errorInterceptors来捕获错误
通过设置错误拦截器可以捕获Restangular内的错误。通过errorInterceptor可以将错误信息
在应用中进行传递。
如果errorInterceptor返回false,promise链就会被中断,并且我们的应用永远都不需要处
理错误。
例如,此时是处理验证失败的好时机。任何请求如果返回了401,可以通过errorInterceptor
将其捕获并将用户重定向到登录页面。
angular.module('myApp', ['restangular'])
.config(function(RestangularProvider) {
RestangularProvider.setErrorInterceptor(function(resp) {
displayError();
return false; // 停止promise链
});
});
7. 孤立资源设置
如果我们想加载一个没有嵌套在其他资源中的资源,可以使用setParentless设置告诉
Restangular不要构造嵌套结构的URL。
angular.module('myApp', ['restangular'])
.config(function(RestangularProvider) {
RestangularProvider.setParentless(['cars']);
});
setParentless()设置函数可以接受两种不同类型的参数: