# Leach

# 接口响应数据过滤器

leach[apiname](response: object): any

你可以把 leach 理解为一个响应拦截器。它的确也是做了和响应拦截器相同的事情。 不同的是,响应拦截器会对每一个接口进行拦截,而 leach 只针对特定 api 对象进行拦截。 使用方式和 apis 相似,不同的是 apis[apiname] 是一个对象或者字符串,而 leach[apiname] 是一个方法。

// netrol/leach
export default {
  apiname (response, stop) {
    // 将响应数据上的 body(后端返回的数据)返回
    return response.body
  }
}

# response 对象

response 对象是 leach 上定义的方法所接收的一个回调参数,对象属性包括:

  • body

    后端接口返回的数据

  • status

    http 状态码

  • statusText

    http 响应状态对应的文本信息

  • xhr

    XMLHttpRequest 实例对象

leach 定义的方法是 Netrol promise 链执行的最后一个阶段。 也就是说,在 leach[apiname] 方法里面返回的值,将作为调用 request 请求函数 promise resolve 的结果。

# stop 中止函数

stop 函数,用于终止 Promise 链,调用 stop 函数,返回一个 'error.ErrorType.STOP'(0) 的错误

# 使用范例

// netrol/leach.js
export default {
  apiname (res, stop) {
    if (/* 符合条件 */) return stop()
    // 执行一些操作
    return // ... 返回结果
  }
}

// netrol/index.js
import Netrol from 'netrol'
import leach from './leach.js'

export default Netrol.create({
  leach,
  // ...其他配置
})