# 接口平台

# 平台能力

结合具体场景,创建平台应用,实现平台能力

  • 访问凭证验证【默认】
  • 重复请求验证【默认】
  • IP白名单验证【结合应用配置】
  • 运行环境验证【结合应用配置】
  • 访问频次验证【结合应用配置】
  • 有效时间验证【结合应用配置】
  • 响应加密解密【结合应用配置】
  • 统一接口管理【TODO】
  • 应用接口授权【仅对PLAT地址生效】
  • 请求日志管理【外部接口】

# 创建平台应用

基本信息

  • 地址: /plat/app/generate
  • 请求方式: POST
  • Content-Type: application/json
  • Header:userKey Future_2018

参数说明

参数 示例 必填 说明
sourceCode htmp 第三方用户唯一凭证
appName 教学平台 第三方用户唯一凭证密钥,即auth_secret
generateResponseSecret true 返回结果是否加密
visitLimit 20 接口访问频次,单位分钟
validTime 60 请求时间与服务器时间的有效间隔,单位秒
validEnv production 运行环境
whiteIpList 192.168.0.198 IP白名单列表,多个用逗号隔开

响应说明

{
    "msg": "操作成功",
    "code": 200,
    "data": {
        "sourceCode": "htmp",
        "appName": "教学平台",
        "appId": "78974aede6b8408ab69a364160a682ef", // 应用唯一标识
        "appSecret": "292ef3fa6b1d3038484fc37657fa74b9", // 应用标识密钥
        "responseSecret": "19a523c6d7c10096513fd42a8ecc0a17" // 返回结果解密密钥
    }
}

# 获取访问凭证

平台接口调用时,请求头需携带访问凭证satoken,开发者需妥善保存,有效期为2小时。

基本信息

  • 地址: /plat/access/getToken
  • 请求方式: POST
  • Content-Type: application/json

参数说明

参数 示例 必填 说明
appId 78974aede6b8408ab69a364160a682ef 第三方应用唯一标识
appSecret 292ef3fa6b1d3038484fc37657fa74b9 第三方应用唯一密钥

结果说明

{
    "msg": "操作成功",
    "code": 200,
    "data": "c2363ed2-04f6-494f-956d-6ef08b5a4790" // 访问凭证satoken
}

# 访问业务资源

PATH地址:PLAT服务暴露的业务资源地址

基本信息

  • 地址: /plat/access/getData
  • 请求方式: POST
  • Content-Type: application/json
  • Header【必要】:satoken
  • Header【必要】:appId
  • Header【必要】:nonce 示例:请求唯一值
  • Header【结合应用配置】:timestamp 示例:1750212960723
  • Header【结合应用配置】:appEnv 示例:prod

参数说明

参数 示例 必填 说明
path /plat/system/system/config/configByName 资源地址
hospitalId NTSY135 访问医院标识
appCode mt 访问应用标识
param {"configName": "进修类型"} 业务参数 json对象

结果说明

{
  "code": 200,
  "msg": "操作成功",
  "data": "[{\"value\":\"普通进修\",\"type\":\"周期\",\"typeCode\":\"mt\"},{\"value\":\"短期进修\",\"type\":\"周期\",\"typeCode\":\"mt\"}]"
}

响应解密

请求响应采用AES加密 Java的解密示例:

    /**
     * 使用Hutool工具类解密
     * @param encrypt 密文
     * @param aesKey 解密密钥responseSecret
     */
    public static String decrypt(String encrypt, String aesKey) {
        byte[] byteKey = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue(), aesKey.getBytes()).getEncoded();
        SymmetricCrypto aes = SecureUtil.aes(byteKey);
        return aes.decryptStr(encrypt);
    }
上次更新时间: 12/2/2025, 4:25:06 PM