网络请求 Proxy

接口调用API

  • 接口调用目前分为两种情况,提供不同的API来使用;
  • 1、在有当前页面模型viewModel的情况,框架自动处理封装了dominKey参数,使用viewModel.setProxy() API来进行接口请求;
  • 2、在没有当前页面模型viewModel的情况下(比如门户页面扩展,就没有viewModel),使用cb.rest.DynamicProxy() API来实现接口请求;

viewModel.setProxy()

  • 有ViewModel时的情况,框架自动处理domainKey参数
  • 默认是异步调用,可以配合promise以及 async、await来封装使用
示例

// 声明
const proxy = viewModel.setProxy({
  saveLog: {
    url: '/xxx/xxx/saveByToken',
    method: 'POST',
    options: {
      mask: false
    }
  }
});
// 调用
proxy.saveLog(params, function (data) {
  console.log('success', data)
})
  • 参数说明:
参数 含义 是否必输 类型 默认值 可取值
url 请求地址 String 后端请求接口url
method 请求类型 String GET 或 POST
options 参数 Object
--mask 是否显示Loading boolean true true 或 false
--uniform 是否走统一Node路由转发 boolean true true 或 false
--async 是否同步请求 boolean false true 或 false
--deflate 是否压缩加密传输 boolean false true 或 false
--timeout 超时时间,毫秒级别 number
--contentType 请求头类型 String application/json;charset=utf-8
--domainKey 目标服务domainKey String 默认取本领域
--dateType 数据类型 String json 或 file
callback 请求回调函数 function
params 上送业务参数 Object
  • 异步请求改为同步请求的两种方式:
  • 1、在options里面的async改为true

示例:


// 声明
const proxy = viewModel.setProxy({
  saveLog: {
    url: '/xxx/xxx/saveByToken',
    method: 'POST',
    options: {
      mask: false,
      // 开启同步请求
      async:true
    }
  }
});
// 调用
proxy.saveLog(params, function (data) {
  console.log('success', data)
})
  • 2、通过生成的proxy对象的Sync(自定义的saveLog+Sync的拼接)方法

示例:


// 声明
const proxy = viewModel.setProxy({
  saveLog: {
    url: '/xxx/xxx/saveByToken',
    method: 'POST',
    options: {
      mask: false,
    }
  }
});
// 同步调用
const data = proxy.saveLogSync(param);

cb.rest.DynamicProxy()

  • 无ViewModel时的情况,需要自行传入domainKey参数
  • 默认是异步调用,可以配合promise以及 async、await来封装使用
示例

// 声明
const proxy = cb.rest.DynamicProxy.create({
  ensure: {
    url: '/xxx/xxx/autoPick',
    method: 'POST'
  }
});
// 调用
proxy.ensure(params, function (err, result) {
  console.log('success', result)
})
  • 参数说明:
参数 含义 是否必输 类型 默认值 可取值
url 请求地址 String 后端请求接口url
method 请求类型 String GET 或 POST
options 参数 Object
--domainKey 目标服务domainKey String
callback 请求回调函数 function
params 上送业务参数 Object
与promise配合使用,以及async\await配合使用示例
// 配合promise声明
const httpAjax = (method, url, payload = {}) => {
  return new Promise((resolve, reject) => {
    cb.rest.DynamicProxy.create({
      ensure: {
        url,
        method,
        options: {
          domainKey: ''
        }
      }
    }).ensure(payload, (err, res) => {
      if (err) {
        reject(err);
      } else {
          resolve(res);
      }
    });
  });
};
// 提取get请求
const httpGet = (url, payload) => {
  return httpAjax('GET', url, payload);
};
// 提取post请求
const httpPost = (url, payload) => {
  return httpAjax('POST', url, payload);
};

 // 配合async await 调用
const getTableData = async () => {
    try {
      const data = await httpPost(
        '/api/v1/monitor/SpcMonitorDefineList',
        {
            a:xxx
        }
      );
    } catch (error) {
      cb.utils.alert(error);
    }
};

下载文件

  • 使用createDownloadForm() API 来下载文件

下载示例


viewModel.get('xxxx按钮').on(v'click', () => {
  const data = {};
  const prefix = cb.utils.getServiceUrl();
  const url = `${prefix}/files/xxx?domainKey=domainxxxxx`;
  const { common } = ViewModel.biz.action()
  common.createDownloadForm({ 
        url, 
        params: data,
        callback: function(code){
            // code 为1时,下载成功 值为0时 下载失败
        }
  });
});

/**
* 1. 后端需要的参数可以放到data里
* 2. xxx 为后端接口(确保能返回流文件)
* 3. domainxxxxx为当前领域domainKey
*/
  • 参数说明:
参数 含义 是否必输 类型 默认值 可取值
url 下载地址 String
params 后端接收的参数 Object
callback 文件下载后的回调函数 function 返回code,值为1时,下载成功 值为0时 下载失败
Copyright © 用友 -【生态技术部】 2022-2023 all right reserved,powered by Gitbook修订时间: 2023-02-03 18:43:49

results matching ""

    No results matching ""