作者:管理员  历史版本:1  最后编辑:龚清  更新时间:2024-11-20 15:41

支持第三方接口开发指导

说明:
本示例中的代码和截图可能和您现在手中的版本不同,但操作思路一样。

特别说明:以下举例的例子要自己代码,是写死的数据的代码,请根据自己实际业务编写代码只是作为参考不能直接调用使用

一、概述

表单或者列表部分数据是通过第三方接口(RESTfull风格Web Service)获取数据,通过配置和编写代码平台的输入、输出参数的中间转换适配。达到第三方接口的数据兼容。转换成平台识别的数据,给下拉、单选、多选、自定义对话框、关联数据等提供数据来源

二、 操作步骤

特别说明:以下举例的例子要自己代码,是写死的数据的代码,请根据自己实际业务编写代码只是作为参考不能直接调用使用

以下例子都以该接口http://192.168.3.230:15100/ibps/platform/v3/service/demo/query 为例了【post类型接口】

1.服务配置管理

在服务管理配置,例如下图:

2. 数据集

在数据配置,选择服务配置管理,例如下图:

3. 数据模版

在数据模版配置过程

1)接口数据参数处理

特别说明:以下举例的例子要自己代码,是写死的数据的代码,请根据自己实际业务编写代码只是作为参考不能直接调用使用

示例中的代码维护在:CommonScript.java类中
输入参数数据处理】:
cscript.defaultResfulInput(params) params参数必须是这个参数

`params`是个Map对象,包含以下内容:
  `query` 查询数据
  `page` 分页数据

输出参数数据处理
cscript.defaultResfulOutput(data) data参数必须是这个参数

`data`是个JSONString,需要根据实际数据进行解析

2)查询字段配置

根据实际情况配置,例如:ibps平台,是数据库表的字段,name_,最后输出格式Q^name_^SL
所以标识(name) 填写name_也是上节输入参数(接收字段)一致

3)显示字段配置

根据实际情况配置,一般都是输出的结果集包含,例如:name(区分大小写,必须跟结果集一致)

4)过滤条件

该功能暂不支持

5)返回字段

根据实际情况配置,参考【显示字段配置】

6)排序字段

根据实际情况配置,参考【查询字段配置】

7)最终预览效果

4、表单控件效果

具体参考[数据模版-表单控件]

1) 单选和多选、下拉配置步骤和效果

1—)数据模版配置-值来源

2-)表单配置
选择值来源

配置字段

最终效果

2)关联数据控件配置步骤和使用效果

类似【单选和多选、下拉】配置

3)自定义对话框配置步骤和使用效果

类似【单选和多选、下拉】配置,只是类型配置成对话框

4) 文本框获取值配置步骤和效果( 暂不支持)

三、 脚本编写

特别说明:以下举例的例子要自己写代码,是写死的相关数据的代码,请根据自己实际业务编写代码只是作为参考不能直接调用使用,请勿直接使用,否则引起错误自行承担

1、输入参数数据处理脚本编写

参考示例:

/**
     * 输入参数数据处理脚本
     * @param params
     * @return
     */
    @SuppressWarnings("unchecked")
    public Map<String,Object> defaultResfulInput(Map<String,Object> params) {
        ///获取查询数据【固定参数】
        Map<String, Object> querys = (Map<String, Object>) params.get("query");
        Map<String, Object> page = (Map<String, Object>) params.get("page");

         Map<String,Object> map = new HashMap<String, Object>();
         Map<String,String> header = new HashMap<String, String>();
         // 设置请求头,**目前写死token**,实际根据获取外部的token
         header.put("X-Authorization-access_token", "9b4f99b0012e11ea842692c3dee51b7e");
         map.put("header",header);
         //构建查询
        JSONArray parameters = new JSONArray();
        for(Map.Entry<String, Object> entry : querys.entrySet()){
            JSONObject param = new JSONObject();
            param.accumulate("key", "Q^"+entry.getKey()+"^SL").accumulate("value",entry.getValue());
            parameters.add(param);
        }
         JSONObject body = new JSONObject();
         body.accumulate("parameters",parameters);

        //构建分页
         JSONObject requestPage = new JSONObject();
         requestPage.accumulate("pageNo", page.get("pageNo"));
         requestPage.accumulate("limit", page.get("pageSize"));
         body.accumulate("requestPage",requestPage);
            //构建排序
         body.accumulate("sorts",new JSONArray() );
         map.put("body",body.toString());
         map.put("bodyType","json");
        return map;
    }


根据接口输入参数,需要返回实际的参数

输入(接受)参数params是个Map对象,包含以下【固定参数】:
query 查询数据
page 分页数据

返回值是个Map(Map类型) Map的key包含以下【固定参数】
(这个需要分析你们接口请求类型,是post、get的方法,输入参数(body,query))
bodyType form、json等[如果是post类型建议传入]
body json字符串
query 查询的键值对
header 请求头

2、 输出参数数据处理脚本编写

参考示例:

  public List<?>defaultResfulOutput(String  data ) {
            List<Map<String, Object>> result = new ArrayList<Map<String,Object>>();
        JSONObject  json = JSONObject.fromObject(data);
        JSONObject dataJson =JsonUtil.getJSONobject(json, "data");
        JSONArray dataResult = JsonUtil.getJSONArray(dataJson, "dataResult");
        JSONObject pageResult  = JsonUtil.getJSONobject(dataJson, "pageResult");
        //数据处理
        if(JsonUtil.isNotEmpty(dataResult)) {
            for (Object obj : dataResult) {
                Map<String, Object> map = new HashMap<String, Object>();
                JSONObject  dataResultJson = (JSONObject) obj;
                for (Iterator<?> iter = dataResultJson.keys(); iter.hasNext();) {
                    String key = (String) iter.next();
                    map.put(key, JsonUtil.getString(dataResultJson, key));
                }
                result.add(map);
            }
        }
        //分页处理
        if(JsonUtil.isNotEmpty(pageResult)) {
            Integer pageNo = JsonUtil.getInt(pageResult, "pageNo");
            int limit = JsonUtil.getInt(pageResult, "limit");    
            int totalCount = JsonUtil.getInt(pageResult, "totalCount");    
            PageResult page = new PageResult(pageNo,limit,totalCount);
            result =new PageList<Map<String, Object>>(result,page);
        }

        return result;
  }


根据提供接口的返回结果,返回list(如果包含分页数据则返回PageList)

-输入参数:data是个JSON的String,需要根据实际数据进行解析

-返回值是个List类型 ,返回列表数据,如果包含分页数据则返回PageList