docs: function processHandle(handle, rulePath, changeOrigin) {
    let type = typeof handle;
    let ruleDir;
  
    if (typeof rulePath === 'string') {
      ruleDir = libPath.dirname(rulePath);
    } else {
      ruleDir = process.cwd();
    }
  
    if (type === 'string') {
      if (handle.indexOf('http') === 0) {
        // http或https，代理到线上地址
        return function (req, res) {
          // 补全代理url
          let relUrl = _.resolveUrl(handle, req.params);
          if (relUrl !== handle) {
            req.url = libUrl.parse(relUrl).path;
          }
  
          // 使用代理转发
          return proxy(req, res, {
            target: relUrl,
            changeOrigin: changeOrigin
          });
        };
      } else {
        return function (req, res, next) {
          let relativePath = _.resolveUrl(handle, req.params);
          let filepath = libPath.resolve(ruleDir, relativePath);
  
          if (fs.existsSync(filepath)) {
            // 文件路径，返回文件
            return res.sendFile(filepath);
          } else {
            // 非文件路径，直接返回
            res.send(handle);
          }
        };
      }
    }
  
    // {
    //  handle: 'xx',
    //  transform: xx
    // }
    if(typeof handle === 'object' ){
      let realHandle = processHandle(handle.handle, rulePath, changeOrigin);
      return function(req, res, next){
        res.nei_transform = handle.transform
        realHandle(req, res, next);
      }
    }
  
    // 函数
    if (typeof handle === 'function' || (_.isObject(handle) && handle.nei)) {
      handle = _.isObject(handle) ? handle.handle : handle;
      return function (req, res, next) {
        // 解决body Parser的异常
        jsonParser(req, res, function () {
          urlencoded(req, res, function () {
            textParser(req, res, function () {
              handle(req, res, next);
            });
          });
        });
      };
    }
  
    // 其他非函数的情况，如数值、布尔值之类，直接返回
    return function (req, res) {
      res.send(handle)
    };
  }