title: Taro.addInterceptor(interceptor)

sidebar_label: addInterceptor

最低 Taro 版本: 1.2.16

可以使用拦截器在请求发出前或发出后做一些额外操作。

在调用 Taro.request 发起请求之前,调用 Taro.addInterceptor 方法为请求添加拦截器,拦截器的调用顺序遵循洋葱模型。 拦截器是一个函数,接受 chain 对象作为参数。chain 对象中含有 requestParmas 属性,代表请求参数。拦截器内最后需要调用 chain.proceed(requestParams) 以调用下一个拦截器或发起请求。

Taro 提供了两个内置拦截器 logInterceptortimeoutInterceptor,分别用于打印请求的相关信息和在请求超时时抛出错误。

支持情况:addInterceptor - 图1 addInterceptor - 图2 addInterceptor - 图3 addInterceptor - 图4 addInterceptor - 图5 addInterceptor - 图6 addInterceptor - 图7

类型

  1. (interceptor: interceptor) => any

参数

参数 类型
interceptor interceptor

示例代码

示例 1

  1. const interceptor = function (chain) {
  2. const requestParams = chain.requestParams
  3. const { method, data, url } = requestParams
  4. console.log(`http ${method || 'GET'} --> ${url} data: `, data)
  5. return chain.proceed(requestParams)
  6. .then(res => {
  7. console.log(`http <-- ${url} result:`, res)
  8. return res
  9. })
  10. }
  11. Taro.addInterceptor(interceptor)
  12. Taro.request({ url })

示例 2

  1. Taro.addInterceptor(Taro.interceptors.logInterceptor)
  2. Taro.addInterceptor(Taro.interceptors.timeoutInterceptor)
  3. Taro.request({ url })