任何时候,如果我们想要为请求添加全局功能,例如身份认证、错误处理等,在请求发送给服务器之前或服务" name="description">

angular http interceptors 拦截器使用分享【10bet】

来源:http://www.chinese-glasses.com 作者:Web前端 人气:137 发布时间:2020-04-07
摘要:时间: 2019-10-11阅读: 63标签: 拦截器拦截器 style="font-size: 14px; line-height: 1.5;">任何时候,如果我们想要为请求添加全局功能,例如身份认证、错误处理等,在请求发送给服务器之前或服务

时间: 2019-10-11阅读: 63标签: 拦截器拦截器

style="font-size: 14px; line-height: 1.5;">任何时候,如果我们想要为请求添加全局功能,例如身份认证、错误处理等,在请求发送给服务器之前或服务器返回时对其进行拦截,是比较好的实现手段。

在开始创建拦截器之前,一定要了解$q和延期承诺api

 angularJs通过拦截器提供了一个从全局层面进行处理的途径。

出于全局错误处理,身份验证或请求的任何同步或异步预处理或响应的后处理目的,希望能够在将请求移交给服务器之前拦截请求,并在将请求移交给服务器之前将响应拦截发起这些请求的应用程序代码-拦截器利用promise api满足同步和异步预处理的需求。

四种拦截器

拦截器是$通过将它们添加到$数组而向其注册的服务工厂。调用工厂并注入依赖项(如果指定),并返回拦截器。

实现 request 方法拦截请求

request: function(config) {
    // do something on request success
    return config || $q.when(config);
}

该方法会在 $http 发送请求后台之前执行,因此你可以修改配置或做其他的操作。该方法接收请求配置对象(request configuration object)作为参数,然后必须返回配置对象或者 promise 。如果返回无效的配置对象或者 promise 则会被拒绝,导致 $http 调用失败。

有两种拦截器(和两种拒绝拦截器):

实现 requestError 方法拦截请求异常

requestError: function(rejection) {
  // do something on request error
  return $q.reject(rejection);
}

有时候一个请求发送失败或者被拦截器拒绝了,请求异常拦截器会俘获那些被上一个请求拦截器中断的请求。它可以用来恢复请求或者有时可以用来撤销请求之前所做的配置,比如说关闭进度条,激活按钮和输入框什么之类的。

request:拦截器通过http config对象调用。该函数可以自由修改config对象或创建新对象。函数需要config直接返回对象,或者包含config或新config对象的Promise。requestError:当先前的拦截器抛出错误或被拒绝解决时,拦截器将被调用。response:拦截器通过对象调用。该函数可以自由修改response对象或创建新对象。函数需要response直接返回对象,或者作为包含response或新response对象的承诺。responseError:当先前的拦截器抛出错误或被拒绝解决时,拦截器将被调用。

实现 response 方法拦截响应

response: function(response) {
  // do something on response success
   return response || $q.when(response);
}

该方法会在 $http 接收到从后台过来的响应之后执行,因此你可以修改响应或做其他操作。该方法接收响应对象(response object)作为参数,然后必须返回响应对象或者 promise。响应对象包括了请求配置(request configuration),头(headers),状态(status)和从后台过来的数据(data)。如果返回无效的响应对象或者 promise 会被拒绝,导致$http 调用失败。

本文由10bet发布于Web前端,转载请注明出处:angular http interceptors 拦截器使用分享【10bet】

关键词:

最火资讯