diff --git a/.gitignore b/.gitignore index 5ff6309..d769462 100644 --- a/.gitignore +++ b/.gitignore @@ -4,10 +4,7 @@ target/ !**/src/test/**/target/ ### IntelliJ IDEA ### -.idea/modules.xml -.idea/jarRepositories.xml -.idea/compiler.xml -.idea/libraries/ +.idea *.iws *.iml *.ipr diff --git a/README.md b/README.md index 9b95184..584d198 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Jhinno OpenAPI SDK for Java +# 1. Jhinno OpenAPI SDK for Java 针对Java的景行API SDK使Java开发人员能够轻松使用景行API接口。您可以在几分钟内开始通过Maven或jar文件使用它。 @@ -7,21 +7,26 @@ - [最新jar包:jhinno-openapi-java-sdk-1.0.0.jar](https://jhinno-jenkins.yuchat.top/job/jhinno-openapi-java-sdk/lastSuccessfulBuild/artifact/target/jhinno-openapi-java-sdk-1.0.0.jar) - [最新源码包:jhinno-openapi-java-sdk-1.0.0-sources.jar](https://jhinno-jenkins.yuchat.top/job/jhinno-openapi-java-sdk/lastSuccessfulBuild/artifact/target/jhinno-openapi-java-sdk-1.0.0-sources.jar) -## 必要条件 +## 1.1 必要条件 - Java 1.8 or later - Maven -## 支持的Appform的版本 +## 1.2 支持的Appform的版本 1. JH_Appform_6.0_Release 2. JH_Appform_6.0_SP1_Release +3. JH_Appform_6.1_Release -## 安装 +# 2. 快速开始 -建议在您的项目中使用Jhinno OpenAPI SDK for Java的方法是从Maven中使用它。导入方法如下: +## 2.1 SpringBoot -方法一:通过Maven仓库安装 +### 2.1.1 安装 + +建议在您的项目中使用Jhinno OpenAPI SDK for Java的方法是从Maven中使用它。: + +#### 方法一:通过Maven仓库安装 > 添加仓库地址(改方案为备用方案,后续会上传至Maven中央仓库,目前不影响正常使用) @@ -36,68 +41,204 @@ ``` -添加依赖 +#### 方法二:通过命令将jar包导入本地Maven仓库 + +```shell + +# SDK Client的jar包的导入,其中为jar的路径,为jar包路径 +mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile="/jhinno-openapi-java-sdk-1.0.0.jar" -Dsources="/jhinno-openapi-java-sdk-1.0.0-sources.jar" +# 例如 +mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile="E:/下载/jhinno-openapi-java-sdk-1.0.0.jar" -Dsources="E:/下载/jhinno-openapi-java-sdk-1.0.0-sources.jar" + +# SDK SpringBoot Starter的jar包的导入,其中为jar的路径,为jar包路径 +mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile="/jhinno-openapi-sdk-spring-boot-starter-x.x.x.jar" -Dsources="/jhinno-openapi-sdk-spring-boot-starter-x.x.x-sources.jar" +# 例如 +mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile="E:/下载/jhinno-openapi-sdk-spring-boot-starter-1.0.1.jar" -Dsources="E:/下载/jhinno-openapi-sdk-spring-boot-starter-1.0.1-sources.jar" +``` + +> 注: +> - jhinno-openapi-java-sdk-x.x.x.jar 为SDK的jar包。 +> - jhinno-openapi-java-sdk-x.x.x-sources.jar 为源码包,添加可方便查看SDK代码的注释。 +> - jhinno-openapi-sdk-spring-boot-starter-x.x.x.jar 为SDK的spring-boot-starter的jar包。 +> - jhinno-openapi-sdk-spring-boot-starter-1.0.1-sources.jar 为SDK的spring-boot-starter的源码包。 + +### 2.1.2 引入`jhinno-openapi-sdk-spring-boot-starter`坐标 ```xml com.jhinno - jhinno-openapi-java-sdk - 1.0.0 + jhinno-openapi-sdk-spring-boot-starter + 1.0.1 ``` -方法二:通过命令将jar包导入本地Maven仓库 +### 2.1.3 配置 + +在SpringBoot的`application.properties`或`application.yml`里面配置 + +#### 2.1.3.1 application.yaml + +```yaml +jhinno: + openapi: + server-url: https://{appform服务器的地址}/appform + used-server-time: true +``` + +#### 2.1.3.2 application.properties + +```properties +jhinno.openapi.server-url=https://{appform服务器的地址}/appform +jhinno.openapi.used-server-time=true +``` + +> 注: +> - 其中`jhinno.openapi.server-url`为景行接口服务的BaseUrl; +> - `jhinno.openapi.used-server-time`是否获取服务器时间来请求token,关闭可提高获取token的时间,但打开有可能因为服务器时间不准确而导致token获取失败的问题。 +> - 更多配置见`com.jhinno.sdk.openapi.autoconfigure.JHOpenapiProperties`源码。 + +### 2.1.4 使用 + +在`com.jhinno.sdk.openapi.api`包下面对应`app`、`data`、`file`、`job`、`organization`这几个子包,分别代表景行`Appform` +的应用、作业数据、文件、作业操作、组织等接口资源。开发者只需要使用接口的执行器(`JHxxxApiExecution` +)即可使用资源,如:`JHFileApiExecution` + +```java +public class DemoUserSDK { + + /** + * 注入要调用的执行器 + */ + @Autowired + private JHFileApiExecution fileApiExecution; + + void contextLoads() { + + // 调用执行其中想要调用的方法 + List list = fileApiExecution.getFileList("jhadmin", "$HOME"); + System.out.println(list); + } +} +``` + +## 2.2 Spring + +### 2.2.1 安装 + +建议在您的项目中使用Jhinno OpenAPI SDK for Java的方法是从Maven中使用它。: + +#### 方法一:通过Maven仓库安装 + +> 添加仓库地址(改方案为备用方案,后续会上传至Maven中央仓库,目前不影响正常使用) + +```xml + + + + jhinno-nexus + jhinno-nexus + https://jhinno-nexus.yuchat.top/repository/maven-releases + + +``` + +#### 方法二:通过命令将jar包导入本地Maven仓库 ```shell -# 其中为jar的路径,为jar包路径 + +# SDK Client的jar包的导入,其中为jar的路径,为jar包路径 mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile="/jhinno-openapi-java-sdk-1.0.0.jar" -Dsources="/jhinno-openapi-java-sdk-1.0.0-sources.jar" # 例如 mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile="E:/下载/jhinno-openapi-java-sdk-1.0.0.jar" -Dsources="E:/下载/jhinno-openapi-java-sdk-1.0.0-sources.jar" ``` -> 注: +> 注: > - jhinno-openapi-java-sdk-x.x.x.jar 为SDK的jar包。 > - jhinno-openapi-java-sdk-x.x.x-sources.jar 为源码包,添加可方便查看SDK代码的注释。 -然后在`pom.xml`添加 +### 2.2.2 引入`jhinno-openapi-java-sdk`坐标 ```xml com.jhinno jhinno-openapi-java-sdk - 1.0.0 + 1.0.1 ``` -方法三:直接在`pom.xml`引用jar(改方法可能会出现一些莫名其妙的问题,所以不建议使用) +### 2.2.3 配置 + +spring.xml添加以下内容 ```xml - + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### 2.2.4 使用 + +在`com.jhinno.sdk.openapi.api`包下面对应`app`、`data`、`file`、`job`、`organization`这几个子包,分别代表景行`Appform` +的应用、作业数据、文件、作业操作、组织等接口资源。开发者只需要使用接口的执行器(`JHxxxApiExecution` +)即可使用资源,如:`JHAppApiExecution` + +```java +public class DemoUserSDK { + + /** + * 注入要调用的执行器 + */ + @Autowired + private JHFileApiExecution fileApiExecution; + + void contextLoads() { + + // 调用执行其中想要调用的方法 + List list = fileApiExecution.getFileList("jhadmin", "$HOME"); + System.out.println(list); + } +} +``` + +## 2.3 普通java项目 + +### 2.3.1 安装 + +- 同 2.2.1 安装一样 + +### 2.3.2 引入`jhinno-openapi-java-sdk`坐标 +```xml + com.jhinno jhinno-openapi-java-sdk - 1.0.0 - system - {path-to-file} + 1.0.1 ``` - -例如 - -```xml - - - com.jhinno - jhinno-openapi-java-sdk - 1.0.0 - system - D:/jar/jhinno-openapi-java-sdk-1.0.0.jar - -``` - -## 使用 +### 2.3.3 使用 在`com.jhinno.sdk.openapi.api`包下面对应`app`、`data`、`file`、`job`、`organization`这几个子包,分别代表景行`Appform` 的应用、作业数据、文件、作业操作、组织等接口资源。开发者只需要使用接口的执行器(`JHxxxApiExecution` @@ -137,7 +278,7 @@ public class DemoUserSDK { ``` -## 支持SDK的扩展 +# 3. 支持SDK的扩展 如果是基于景行定制的接口,本SDK没有包含这些方法,因此您可以基于`JHApiExecution`快速进行扩展,具体的扩展步骤如下: @@ -170,7 +311,7 @@ public class JHAppApiExecution extends JHApiExecution { ``` -## 构建 +# 4. 构建 一旦您检出代码,就可以使用Maven构建它。使用以下命令进行构建: @@ -178,17 +319,17 @@ public class JHAppApiExecution extends JHApiExecution { mvn clean package -DskipTests -P product ``` -## 代码贡献 +# 5. 代码贡献 - 代码必须格式化,使用IDEA自带的格式即可; - 请求路径必须放在一个单独的const类中统一维护,具体可参考现有代码提交; - 封装新的接口是需要继承`JHApiExecution`,调用父类的辅助方法辅助封装; -## 作者 +# 6. 作者 - [yanlongqi](https://github.com/yanlongqi) -## 支持 +# 7. 支持 - 电话(同微信):18794888087 - 邮箱:lqyan@jhinno.com \ No newline at end of file diff --git a/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/client/JHApiClient.java b/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/client/JHApiClient.java index 09fbc8f..7ca6214 100644 --- a/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/client/JHApiClient.java +++ b/jhinno-openapi-java-sdk/src/main/java/com/jhinno/sdk/openapi/client/JHApiClient.java @@ -9,6 +9,7 @@ import com.jhinno.sdk.openapi.ArgsException; import com.jhinno.sdk.openapi.ClientErrorCode; import com.jhinno.sdk.openapi.ClientException; import com.jhinno.sdk.openapi.api.auth.AuthPathConstant; +import lombok.Data; import org.apache.commons.lang3.StringUtils; import org.apache.http.Header; import org.apache.http.HttpEntity; @@ -48,6 +49,7 @@ import java.util.TimeZone; * @author yanlongqi * @date 2024/1/29 10:31 */ +@Data public class JHApiClient { /** @@ -56,7 +58,7 @@ public class JHApiClient { * 如:https://192.168.3.12/appform *

*/ - private final String baseUrl; + private String baseUrl; /** @@ -64,15 +66,34 @@ public class JHApiClient { */ private ObjectMapper mapper; + private int socketTimeout = DefaultHttpClientConfig.SOCKET_TIMEOUT; + private int connectTimeout = DefaultHttpClientConfig.CONNECT_TIMEOUT; + private int connectRequestTimeout = DefaultHttpClientConfig.CONNECTION_REQUEST_TIMEOUT; + /** * 初始化一个JHApiClient的实例,可使用自定义的客户端 * * @param baseUrl 景行接口服务的基础地址 * @param closeableHttpClient 可关闭的HTTP客户端 */ - private JHApiClient(CloseableHttpClient closeableHttpClient, String baseUrl, int socketTimeout, int connectTimeout, int connectRequestTimeout) { + public JHApiClient(CloseableHttpClient closeableHttpClient, String baseUrl, int socketTimeout, int connectTimeout, int connectRequestTimeout) { this.baseUrl = baseUrl.endsWith("/") ? baseUrl.substring(0, baseUrl.length() - 1) : baseUrl; this.closeableHttpClient = closeableHttpClient; + this.socketTimeout = socketTimeout; + this.connectTimeout = connectTimeout; + this.connectRequestTimeout = connectRequestTimeout; + clientInit(); + } + + public JHApiClient() { + clientInit(); + } + + + /** + * 初始化客户端 + */ + public void clientInit(){ this.requestConfig = RequestConfig.custom() .setSocketTimeout(socketTimeout) .setConnectTimeout(connectTimeout) @@ -81,14 +102,13 @@ public class JHApiClient { mapper = new ObjectMapper(); mapper.setTimeZone(TimeZone.getTimeZone("GMT+8")); mapper.setDateFormat(new SimpleDateFormat(DatePattern.NORM_DATETIME_PATTERN)); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } - /** * HTTP的连接客户端 */ - private final CloseableHttpClient closeableHttpClient; + private CloseableHttpClient closeableHttpClient; /**