小程序拦截全局request方法, 进行埋点错误上报

211 阅读1分钟

本文采用Taro框架, 若用其他框架可把Taro换成其他框架对应的全局api即可

import Taro from '@tarojs/taro'

function requetProxy (platformMethod) {
  return function (options: Taro.request.Option) {
    const _success = options.success
    const _fail = options.fail

    options.success = function (e) {
      _success?.call(this, e)

      try {
        console.log('success', options.url, e.data)
        if (e.statusCode != 200 || e.data.code != 0) {
          // 上报逻辑
        }
      } catch (err) {
        console.log('requetProxy success error', err)
      }
    }

    options.fail = function (e) {
      _fail?.call(this, e)
      try {
        console.log('fail', options.url, e.errMsg)
        // 上报逻辑
      } catch (err) {
        console.log('requetProxy fail error', err)
      }
    }

    return platformMethod.call(this, options)
  }
}

Taro.request = requetProxy(Taro.request)