当单独使用 transformResponse 时: 如下,当然不推荐这样做, 最好是参考官方例子,将自己的 transformResponse 作为默认 transformResponse 的数组的一个成员,自己参见官网
export const MenuResource = genResource('/menus', null, null, {
query: {
isArray: true,
method: 'GET',
transformResponse: (result) => {
const res = angular.fromJson(result);
return res;
}
}
});
注意这个例子: 我们只返回了数据,当我们调用 MenuResource.query().$promise.then((res) => {}) 方法时, 这个 res 只有数据(data)而不是 responseObject
此时,我们加入 response 拦截器
export const MenuResource = genResource('/menus', null, null, {
query: {
isArray: true,
method: 'GET',
transformResponse: (result) => {
const res = angular.fromJson(result);
return res;
},
interceptor: {
response: (res) => {
return res;
}
}
}
});
再次调用上面的方法 MenuResource.query().$promise.then((res) => {}) 此时的 res 对象就是 responseObject 了
注意 每次发请求时,返回相应的数据依次被 transformResponse 和 interceptor 执行,最后是 $httpProvider 的拦截器
使用 $resource 自带的 success callback 时, 是可以拿到其它 responseObject 的参数时,但是第一个参数发生了变化
----- $httpProvider interceptor request ----
----- user resource get transformRequest function ----
----- user resource get transformResponse function ----
----- $httpProvider interceptor response ----
----- user resource get interceptor response ----
----- user resource get success ----