Skip to content

Instantly share code, notes, and snippets.

@hjzheng
Last active January 23, 2017 08:56
Show Gist options
  • Save hjzheng/9c59d15023f27e10657312211c99414c to your computer and use it in GitHub Desktop.
Save hjzheng/9c59d15023f27e10657312211c99414c to your computer and use it in GitHub Desktop.
同时 使用拦截器拦截 response 和 transformResponse

当单独使用 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 的参数时,但是第一个参数发生了变化

@hjzheng
Copy link
Author

hjzheng commented Dec 29, 2016

----- $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 ----

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment