需求背景:前端每向后台发送请求之前,或者发送请求出现了什么错误,以及接收后台一次响应之后或者响应出错的时候,通常都会根据具体的需求(请求转换,更改
head
,加token
,响应错误拦截处理,加密解密等)做一些额外处理。如果每一发送请求的地方都进行处理,无疑很有灵活性,但也将无关的代码侵入了业务逻辑中。因此为解决这个问题就有了httpInterceptor
。
angular
中提供了这样的拦截器接口$httpProvider.interceptors
,只要按格式要求定一个httpInterceptor
(这个名字是自定义的,但是其拥有的属性必须要严格按照一定格式)的factory
。可能像下面这个样子:
var myApp = angular.module("myApp", []); //首先定一个app
//定义http拦截器httpInterceptor,这个factory返回的对象可以拥有responseError,response,request,requestError这些属性,分别对应拦截的处理。
myApp.factory('httpInte