为了更好的帮助企业开发者进行系统集成,减轻开发者对接OpenAPI的难度,蓝卓提供了基于JAVA语言的集成工具包SDK(后续将陆续支持多种开发语言),实现对supOS多版本的兼容,降低使用方对supOS的过度依赖。
SDK名称:bluetron-java-sdk jar包下载地址:【bluetron-java-sdk-1.1.4.jar】 主要用于高代码开发的自研APP用。
SDK名称:bluetron-java-sdk
jar包下载地址:【bluetron-java-sdk-1.1.4.jar】
主要用于高代码开发的自研APP用。
引入依赖 # <dependency> <groupId>com.bluetron.sdk</groupId> <artifactId>bluetron-java-sdk</artifactId> <version>#{最佳版本}</version> </dependency> 配置参数 SdkDefaultConfig # 系统相关配置 #
<dependency> <groupId>com.bluetron.sdk</groupId> <artifactId>bluetron-java-sdk</artifactId> <version>#{最佳版本}</version> </dependency>
(1)debugEnable:设置是否开启debug模式;
「true」:部署在supOS kubernetes环境上;appID和secret从环境变量中获取;
「false」:本地部署调试;appID和secret通过配置文件获取;
(2)akskEnable:设置是否开启AK/SK签名模式;
「true」:sdkAppService.init()就不去获取accessToken;
「false」:accessToken会进行初始化;
(1)requestUrl - supOS请求地址,如http://127.0.0.1; (2)requestPort - supOS端口/SK签名模式,如8080; (3)appId - supOS APP 的 appid; (4)appSecret - supOS APP 的 appSecret; (5)appVersion - upOS 版本|如果不填写,接口版本检查将失效; (6)iamAccountId - aksk开启状态下,accountId;参见supOS数据库:supOS_iam,表:iam_account; (7)iamSecretKey - aksk开启状态下,secretKey;参见supOS数据库:supOS_iam,表:iam_account;
(1)requestUrl - supOS请求地址,如http://127.0.0.1;
(2)requestPort - supOS端口/SK签名模式,如8080;
(3)appId - supOS APP 的 appid;
(4)appSecret - supOS APP 的 appSecret;
(5)appVersion - upOS 版本|如果不填写,接口版本检查将失效;
(6)iamAccountId - aksk开启状态下,accountId;参见supOS数据库:supOS_iam,表:iam_account;
(7)iamSecretKey - aksk开启状态下,secretKey;参见supOS数据库:supOS_iam,表:iam_account;
(1)readTimeout - http 读超时时间; (2)connectionTimeout - http 连接超时时间; (3)maxIdleConnections - http 最大连接数; (4)keepAliveDuration - http 保持连接时长;
(1)readTimeout - http 读超时时间;
(2)connectionTimeout - http 连接超时时间;
(3)maxIdleConnections - http 最大连接数;
(4)keepAliveDuration - http 保持连接时长;
(1)acceptLanguage - 国际化配置|可选值 [en-us,zh-cn]; // 设置配置信息 SdkBaseService.setSdkConfigStorage(SdkConfigStorage sdkConfigStorage); 提供服务 #
(1)acceptLanguage - 国际化配置|可选值 [en-us,zh-cn];
// 设置配置信息 SdkBaseService.setSdkConfigStorage(SdkConfigStorage sdkConfigStorage);
应用统一的配置和出口; 实现类:com.bluetron.app.middle.sdk.api.SdkServiceImpl; 接口服务:SdkAppService,SdkSuposService;
supOS 接口服务; 实现类:com.bluetron.app.middle.sdk.api.supOS.SdkSuposService;
内置App接口服务; 实现类:com.bluetron.app.middle.sdk.api.app.SdkAppService;
认证模式; 实现类:com.bluetron.sdk.api.SdkBaseService; 默认值:OAuth 2.0 的 client 模式;
使用方法:getAccessToken(); 实现方式:调用com.bluetron.sdk.config.SdkConfigStorage.setAuthorizationCode() 及 com.bluetron.sdk.config.SdkConfigStorage.setAuthorizationCodeRedirectUri();
Demo 示例 #
SdkDefaultConfig config = new SdkDefaultConfig(); // 示例值,请根据实际参数进行配置 config.setAppId("App_f977249f96f34f01aae3259d98671a7f"); config.setAppSecret("965d2dc6ac2da958e91ba6c5d57bba72"); config.setAppVersion("2.6.0"); config.setRequestUrl("http://127.0.0.1"); config.setRequestPort("80"); config.setReadTimeout(10); SdkSuposService sdkSuposService = new SdkSuposServiceImpl(); sdkSuposService.setSdkConfigStorage(config); // 注意,一定要进行初始化 sdkSuposService.init(); // 获取对象模型接口,根据需要调用相关方法即可 ObjectService objectService = sdkSuposService.getObjectService();
SdkDefaultConfig config = new SdkDefaultConfig(); // 示例值,请根据实际参数进行配置 config.setAppId("App_f977249f96f34f01aae3259d98671a7f"); config.setAppSecret("965d2dc6ac2da958e91ba6c5d57bba72"); config.setIamAccountId("552987919581184"); config.setIamSecretKey("c07582d917b924f217b94c38b2d4484c"); config.setAppVersion("2.6.0"); config.setRequestUrl("http://127.0.0.1"); config.setRequestPort("80"); config.setReadTimeout(10); SdkAppService sdkAppService = new SdkAppServiceImpl(); sdkAppService.setSdkConfigStorage(config); // 注意,一定要进行初始化 sdkAppService.init(); // 通过sdkAppService获取相关app内置服务即可
SdkDefaultConfig config = new SdkDefaultConfig(); // 示例值,请根据实际参数进行配置 config.setAppId("App_f977249f96f34f01aae3259d98671a7f"); config.setAppSecret("965d2dc6ac2da958e91ba6c5d57bba72"); config.setIamAccountId("552987919581184"); config.setIamSecretKey("c07582d917b924f217b94c38b2d4484c"); config.setAppVersion("2.6.0"); config.setRequestUrl("http://127.0.0.1"); config.setRequestPort("8088"); config.setReadTimeout(10); SdkService sdkService = new SdkServiceImpl(); sdkService.setSdkConfigStorage(config); // 注意,一定要进行初始化 sdkService.init(); // 通过sdkAppService获取相关app内置服务 SdkAppService sdkAppService = sdkService.getSdkAppService(); // 通过sdkSuposService获取相关Supos服务 SdkSuposService sdkSuposService = sdkService.getSdkSuposService();
分布式开发 #
对于sdk的配置信息,系统默认提供了基于内存的存储方式。 如果需要支持分布式,存在access_token生成时竞争的问题
使用方可以通过继承`com.bluetron.sdk.config.SdkDefaultConfig`进行扩展; 也可以完全实现`com.bluetron.sdk.config.SdkConfigStorage`满足需求。
统一定义bean #
@Data @Configuration @ConfigurationProperties(prefix = "bluetron.sdk") public class BluetronSdkProperties { /** * 是否开启debug模式,该模式下会打印日志 */ private boolean debugEnable; /** * supOS 请求地址 */ private String requestUrl; /** * supOS apis 请求端口 */ private String requestPort; /** * appid */ private String appId; /** * appSecret */ private String appSecret; /** * accountId, 参见supOS数据库:supOS_iam,表:iam_account */ private volatile String iamAccountId; /** * secretKey, 参见supOS数据库:supOS_iam,表:iam_account */ private volatile String iamSecretKey; private String accessToken; private String refreshToken; private String appVersion; private Integer readTimeout; private String iamAccountId; private String iamSecretKey; }
application.yml配置信息 #
bluetron: sdk: enabled: true #是否开启登陆校验 debug-enable: false request-url: http://127.0.0.1 request-port: 8080 app-id: app-secret: aksk-enable: true iam-account-id: iam-secret-key: app-version: 2.60.00.00-200316-C read-timeout: 10 accept-language: zh-cn
这里提供一种在Spring中的使用方式 #
@Slf4j public class BluetronSdk { public static SdkService sdkService; public static SdkSuposService supOSService; public static SdkAppService appService; static { log.info("初始化bluetron sdk..."); //SpringContextHolder 需要使用方自行定义 BluetronSdkProperties bluetronSdkProperties = SpringContextHolder.getBean(BluetronSdkProperties.class); SdkDefaultConfig config = new SdkDefaultConfig(); BeanUtils.copyProperties(bluetronSdkProperties, config); log.info("bluetron sdk 配置信息{}...", config); sdkService = new SdkServiceImpl(); //配置sdk sdkService.setSdkConfigStorage(config); //初始化sdk sdkService.init(); //获取对应service实例 supOSService = sdkService.getSdkSuposService(); appService = sdkService.getSdkAppService(); log.info("完成初始化bluetron sdk..."); } }
18N支持 #
supOS使用 header Accept-Language : zh-cn / en-us 来做国际化;
SdkDefaultConfig中增加 acceptLanguage 字段,默认为中文;
如果需要修改为英文环境,则可以再配置文件或者是初始化手工修改,代码如下:
config.setAcceptLanguage(SdkConstants.SUPOS_EN_US);
说明 #
AK/SK认证开启以后,OpenAPI 接口走 AK/SK 流程,其他接口仍然以 OAuth 2.0 方式处理。
常见问题排查 #
确保方法的入参是否都正确,注意请求的 Http Method。
请求返回提示:{"code":"80021002","message":"illegal account"},可以到supOS环境中对其日志进行查看。 // 查看命名空间 k3s kubectl get ns // 查看pod k3s kubectl get pod -n {namespace} // 查看pod日志 k3s kubectl logs {pod_id} -n {namespace} 在日志中可以看到 请求的入参、签名源、签名结果、响应信息。可以根据以上信息对问题进行排查。
请求返回提示:{"code":"80021002","message":"illegal account"},可以到supOS环境中对其日志进行查看。
// 查看命名空间 k3s kubectl get ns // 查看pod k3s kubectl get pod -n {namespace} // 查看pod日志 k3s kubectl logs {pod_id} -n {namespace}
在日志中可以看到 请求的入参、签名源、签名结果、响应信息。可以根据以上信息对问题进行排查。