模型转换Java快速集成

1. 获取接口信息

登录门户网站,获取接口信息。接口信息用于与轻量化引擎对接。

2. 生成签名信息

访问轻量化引擎数据服务接口时,需要将签名信息放在请求的Headers里面,用于接口校验。签名信息由接口信息生成,各个字段的含义及生成示例如下:

字段 必选 类型 描述
timeStampData String 当前时间戳
partnerID String 接口信息中的“企业ID”
apiKeyData String MD5 加密密钥
shaKeyData String SHA 加密密钥
Note:

apiKeyData 密钥与 shaKeyData 密钥必须存在一个。

时间戳 timeStampData 生成示例:

 String timeStampData = System.currentTimeMillis()/1000 + "";

密钥生成公共方法类 MD5Utility.java :

密钥 apiKeyData 生成示例:


//partnerID 接口信息-企业ID
//partnerKey 接口信息-密钥
//timeStampData 上面生成的时间戳
 String apiKeyData = Md5(partnerID + secretKey + timeStamp);

密钥 shaKeyData 生成示例:

//partnerID 接口信息-企业ID
//partnerKey 接口信息-密钥
//timeStampData 上面生成的时间戳
 String apiKeyData = SHA256(partnerID + secretKey + timeStamp);

3. 上传模型文件

插入转换任务前,需要先将待转换的模型文件上传到轻量化服务平台。推荐使用MinIO上传。
说明:如果模型文件位于HTTP或HTTPS路径,且可被轻量化服务平台获取,则可以直接进入下一步插入转换任务

3.1 使用MinIO上传

获取MinIO临时授权上传信息:
POST      [http://服务IP:8090]/nds_requests/common/GetPresignedUploadUrl  

返回数据示例:

{
    "status": {
        "code": 1,
        "msg": "成功"
    },
    "data": {
        "inputNdsFile": "202305101737093718/box.par",
        "url": "http://xxx/202305101737093718/box.par?X-Amz-Algorithm..."
    }
}

相关参数说明,请参考 API接口 中的1.1 临时授权接口

临时授权路径使用PUT方式将文件上传到云文件服务中,前端上传示例如下:

//前端页面上传处理
let file = $('#fileSelect')[0].files[0];//选择文件
     $.ajax({
       url: url,
       type: "put",
       data: file, 
       async: true,
       processData: false,
       contentType: false,
       error: function (xhr, status, error) {                   

       },
       success: function (result) {

       },
     });

3.2 使用FTP上传

获取FTP接口信息:
POST   [http://服务IP:8090]/nds_requests/common/GetFTPInfo  

返回数据示例:

{
    "status": {
        "code": 1,
        "msg": "成功"
    },
    "data": {
        "ftp": "ftp://118.31.117.19:21",
        "ftpUserName": "e[ftp密钥]XVxxxx",
        "ftpPassword": "e[ftp密钥]XVxxxx"
    }
}

相关参数说明,请参考 API接口 中的1.2 FTP接口

4. 插入转换任务

准备好模型文件后,可以将其插入转换任务,以便生成轻量化数据。

插入一条转换任务: POST     [http://服务IP:8090]/nds_requests/common/InsertTask  

返回数据示例:

{
    "status": {
        "code": 1,
        "msg": "成功"
    },
    "data": {
        "taskID": 998720
    }
}

关于请求参数和返回参数的说明,请参考 API接口 中的2.1.1 单任务添加接口

如果请求参数中包含 returnURL ,则任务处理完成后将对该路径进行回调,请参考 API接口 中的2.4 回调

5. 查询转换结果

可通过接口主动查询任务状态,查看模型处理情况。

查询转换结果:
POST   [http://服务IP:8090]/nds_requests/common/QueryTask  

返回数据示例:

{
    "status": {
        "code": 1,
        "msg": "成功"
    },
    "data": {
        "status": 2,
        "errorDescription": "OK",
        "errorDetail": "OK",
        "outputFiles": "145bf249-98e1-4a7e-8ba2-11a85800a82f.zip",
        "outFilePathType": 0,
        "outputNdsFiles": "aHR0cDovLzEwLjEyMi44Mi45Mjo5MDAwL3l1bmFwaS9lbnRlcnByaXNlLzgxMzg2MzgzMzI2MDQ1MjgxNjkzL2Rvd25sb2FkLzRmM2Q4MjZkLTIwMTQtNDRmMi1iMmU2LTZiOWVmOTBmZWQzMi56aXA/WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1USURCRUQwRTBZMTBENjA5OVYxSSUyRjIwMjQwMTE2JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDExNlQwMjEyNDNaJlgtQW16LUV4cGlyZXM9MTcyODAwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZYLUFtei1TaWduYXR1cmU9YzVkNGYyZmIyMDQzNjRiMzU5MTczYzEwNTc2YTEwMzA1YjExYTNhZWEwYTQzNWUxYmY0OWVjYTg1OWI2YTgwNA=="
        "errorType": 1,
        "previewURL": "aHR0cHM6Ly9hcGkuM2RvcGVuLmNuL3ByZXZpZXcuaHRtbD9pdGVtQ29kZT02OEMwQTM3MUFFOTk3NUNGNkEzMTUyQzNERTczQzlGQw==",
        "jsonURL": "aHR0cHM6Ly9taW5pby4zZG9wZW4uY24vM2RvcGVuL3RlbXBGaWxlL01vZGVsRmlsZS9OZXdkaW1jaGluYS8xNjgzNzEzOTQ2NjI3LzAvcHJvZHVjdERhdGEuanNvbg==",
        "imgURL": "aHR0cHM6Ly9taW5pby4zZG9wZW4uY24vM2RvcGVuL3RlbXBGaWxlL01vZGVsRmlsZS9OZXdkaW1jaGluYS8xNjgzNzEzOTQ2NjI3L1RodW1ibmFpbC5wbmc="
    }
}

关于请求参数和返回参数的说明,请参考 API接口 中的3.1 单任务查询接口

6. 预览轻量化模型

将字段 previewURL(通过base64编码)解密后,获得轻量化模型预览地址。也可在门户网站,将轻量化模型文件下载到本地磁盘。集成Viewer组件后,通过浏览器预览。