doc(readme): 优化使用说明

This commit is contained in:
lqyan
2024-06-05 14:41:57 +08:00
parent dda983c9e8
commit ec7d38f9dc
3 changed files with 206 additions and 48 deletions

5
.gitignore vendored
View File

@@ -4,10 +4,7 @@ target/
!**/src/test/**/target/ !**/src/test/**/target/
### IntelliJ IDEA ### ### IntelliJ IDEA ###
.idea/modules.xml .idea
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws *.iws
*.iml *.iml
*.ipr *.ipr

217
README.md
View File

@@ -1,4 +1,4 @@
# Jhinno OpenAPI SDK for Java # 1. Jhinno OpenAPI SDK for Java
针对Java的景行API SDK使Java开发人员能够轻松使用景行API接口。您可以在几分钟内开始通过Maven或jar文件使用它。 针对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) - [最新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) - [最新源码包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 - Java 1.8 or later
- Maven - Maven
## 支持的Appform的版本 ## 1.2 支持的Appform的版本
1. JH_Appform_6.0_Release 1. JH_Appform_6.0_Release
2. JH_Appform_6.0_SP1_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中央仓库目前不影响正常使用 > 添加仓库地址改方案为备用方案后续会上传至Maven中央仓库目前不影响正常使用
@@ -36,21 +41,113 @@
</repositories> </repositories>
``` ```
添加依赖 #### 方法二通过命令将jar包导入本地Maven仓库
```shell
# SDK Client的jar包的导入其中<path-to-dir>为jar的路径<path-to-dir>为jar包路径
mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile="<path-to-dir>/jhinno-openapi-java-sdk-1.0.0.jar" -Dsources="<path-to-dir>/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包的导入其中<path-to-dir>为jar的路径<path-to-dir>为jar包路径
mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile="<path-to-dir>/jhinno-openapi-sdk-spring-boot-starter-x.x.x.jar" -Dsources="<path-to-dir>/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 ```xml
<dependency> <dependency>
<groupId>com.jhinno</groupId> <groupId>com.jhinno</groupId>
<artifactId>jhinno-openapi-java-sdk</artifactId> <artifactId>jhinno-openapi-sdk-spring-boot-starter</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
</dependency> </dependency>
``` ```
方法二通过命令将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<FileInfo> list = fileApiExecution.getFileList("jhadmin", "$HOME");
System.out.println(list);
}
}
```
## 2.2 Spring
### 2.2.1 安装
建议在您的项目中使用Jhinno OpenAPI SDK for Java的方法是从Maven中使用它。
#### 方法一通过Maven仓库安装
> 添加仓库地址改方案为备用方案后续会上传至Maven中央仓库目前不影响正常使用
```xml
<repositories>
<repository>
<id>jhinno-nexus</id>
<name>jhinno-nexus</name>
<url>https://jhinno-nexus.yuchat.top/repository/maven-releases</url>
</repository>
</repositories>
```
#### 方法二通过命令将jar包导入本地Maven仓库
```shell ```shell
# 其中<path-to-dir>为jar的路径<path-to-dir>为jar包路径
# SDK Client的jar包的导入其中<path-to-dir>为jar的路径<path-to-dir>为jar包路径
mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile="<path-to-dir>/jhinno-openapi-java-sdk-1.0.0.jar" -Dsources="<path-to-dir>/jhinno-openapi-java-sdk-1.0.0-sources.jar" mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile="<path-to-dir>/jhinno-openapi-java-sdk-1.0.0.jar" -Dsources="<path-to-dir>/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" 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"
@@ -60,44 +157,88 @@ mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile="E:/
> - jhinno-openapi-java-sdk-x.x.x.jar 为SDK的jar包。 > - jhinno-openapi-java-sdk-x.x.x.jar 为SDK的jar包。
> - jhinno-openapi-java-sdk-x.x.x-sources.jar 为源码包添加可方便查看SDK代码的注释。 > - jhinno-openapi-java-sdk-x.x.x-sources.jar 为源码包添加可方便查看SDK代码的注释。
然后在`pom.xml`添加 ### 2.2.2 引入`jhinno-openapi-java-sdk`坐标
```xml ```xml
<dependency> <dependency>
<groupId>com.jhinno</groupId> <groupId>com.jhinno</groupId>
<artifactId>jhinno-openapi-java-sdk</artifactId> <artifactId>jhinno-openapi-java-sdk</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
</dependency> </dependency>
``` ```
方法三:直接在`pom.xml`引用jar(改方法可能会出现一些莫名其妙的问题,所以不建议使用) ### 2.2.3 配置
spring.xml添加以下内容
```xml ```xml
<!-- 其中{path-to-file}为jar的位置 --> <?xml version="1.0" encoding="utf-8"?>
<beans>
<bean id="apiClient" class="com.jhinno.sdk.openapi.client.JHApiClient">
<property name="baseUrl" value="https://172.17.0.5/appform"/>
</bean>
<bean id="appApiExecution" class="com.jhinno.sdk.openapi.api.app.JHAppApiExecution">
<constructor-arg ref="apiClient"/>
</bean>
<bean id="dataApiExecution" class="com.jhinno.sdk.openapi.api.data.JHDataApiExecution">
<constructor-arg ref="apiClient"/>
</bean>
<bean id="fileApiExecution" class="com.jhinno.sdk.openapi.api.file.JHFileApiExecution">
<constructor-arg ref="apiClient"/>
</bean>
<bean id="jhJobApiExecution" class="com.jhinno.sdk.openapi.api.job.JHJobApiExecution">
<constructor-arg ref="apiClient"/>
</bean>
<bean id="departmentApiExecution" class="com.jhinno.sdk.openapi.api.organization.JHDepartmentApiExecution">
<constructor-arg ref="apiClient"/>
</bean>
<bean id="userApiExecution" class="com.jhinno.sdk.openapi.api.organization.JHUserApiExecution">
<constructor-arg ref="apiClient"/>
</bean>
</beans>
```
### 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<FileInfo> 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
<dependency> <dependency>
<groupId>com.jhinno</groupId> <groupId>com.jhinno</groupId>
<artifactId>jhinno-openapi-java-sdk</artifactId> <artifactId>jhinno-openapi-java-sdk</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
<scope>system</scope>
<systemPath>{path-to-file}</systemPath>
</dependency> </dependency>
``` ```
### 2.3.3 使用
例如
```xml
<!-- 其中{path-to-file}为jar的位置 -->
<dependency>
<groupId>com.jhinno</groupId>
<artifactId>jhinno-openapi-java-sdk</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>D:/jar/jhinno-openapi-java-sdk-1.0.0.jar</systemPath>
</dependency>
```
## 使用
`com.jhinno.sdk.openapi.api`包下面对应`app``data``file``job``organization`这几个子包,分别代表景行`Appform` `com.jhinno.sdk.openapi.api`包下面对应`app``data``file``job``organization`这几个子包,分别代表景行`Appform`
的应用、作业数据、文件、作业操作、组织等接口资源。开发者只需要使用接口的执行器(`JHxxxApiExecution` 的应用、作业数据、文件、作业操作、组织等接口资源。开发者只需要使用接口的执行器(`JHxxxApiExecution`
@@ -137,7 +278,7 @@ public class DemoUserSDK {
``` ```
## 支持SDK的扩展 # 3. 支持SDK的扩展
如果是基于景行定制的接口本SDK没有包含这些方法因此您可以基于`JHApiExecution`快速进行扩展,具体的扩展步骤如下: 如果是基于景行定制的接口本SDK没有包含这些方法因此您可以基于`JHApiExecution`快速进行扩展,具体的扩展步骤如下:
@@ -170,7 +311,7 @@ public class JHAppApiExecution extends JHApiExecution {
``` ```
## 构建 # 4. 构建
一旦您检出代码就可以使用Maven构建它。使用以下命令进行构建 一旦您检出代码就可以使用Maven构建它。使用以下命令进行构建
@@ -178,17 +319,17 @@ public class JHAppApiExecution extends JHApiExecution {
mvn clean package -DskipTests -P product mvn clean package -DskipTests -P product
``` ```
## 代码贡献 # 5. 代码贡献
- 代码必须格式化使用IDEA自带的格式即可 - 代码必须格式化使用IDEA自带的格式即可
- 请求路径必须放在一个单独的const类中统一维护具体可参考现有代码提交 - 请求路径必须放在一个单独的const类中统一维护具体可参考现有代码提交
- 封装新的接口是需要继承`JHApiExecution`,调用父类的辅助方法辅助封装; - 封装新的接口是需要继承`JHApiExecution`,调用父类的辅助方法辅助封装;
## 作者 # 6. 作者
- [yanlongqi](https://github.com/yanlongqi) - [yanlongqi](https://github.com/yanlongqi)
## 支持 # 7. 支持
- 电话同微信18794888087 - 电话同微信18794888087
- 邮箱lqyan@jhinno.com - 邮箱lqyan@jhinno.com

View File

@@ -9,6 +9,7 @@ import com.jhinno.sdk.openapi.ArgsException;
import com.jhinno.sdk.openapi.ClientErrorCode; import com.jhinno.sdk.openapi.ClientErrorCode;
import com.jhinno.sdk.openapi.ClientException; import com.jhinno.sdk.openapi.ClientException;
import com.jhinno.sdk.openapi.api.auth.AuthPathConstant; import com.jhinno.sdk.openapi.api.auth.AuthPathConstant;
import lombok.Data;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.http.Header; import org.apache.http.Header;
import org.apache.http.HttpEntity; import org.apache.http.HttpEntity;
@@ -48,6 +49,7 @@ import java.util.TimeZone;
* @author yanlongqi * @author yanlongqi
* @date 2024/1/29 10:31 * @date 2024/1/29 10:31
*/ */
@Data
public class JHApiClient { public class JHApiClient {
/** /**
@@ -56,7 +58,7 @@ public class JHApiClient {
* &#x5982;&#xFF1A;https://192.168.3.12/appform * &#x5982;&#xFF1A;https://192.168.3.12/appform
* </p> * </p>
*/ */
private final String baseUrl; private String baseUrl;
/** /**
@@ -64,15 +66,34 @@ public class JHApiClient {
*/ */
private ObjectMapper mapper; private ObjectMapper mapper;
private int socketTimeout = DefaultHttpClientConfig.SOCKET_TIMEOUT;
private int connectTimeout = DefaultHttpClientConfig.CONNECT_TIMEOUT;
private int connectRequestTimeout = DefaultHttpClientConfig.CONNECTION_REQUEST_TIMEOUT;
/** /**
* 初始化一个JHApiClient的实例可使用自定义的客户端 * 初始化一个JHApiClient的实例可使用自定义的客户端
* *
* @param baseUrl 景行接口服务的基础地址 * @param baseUrl 景行接口服务的基础地址
* @param closeableHttpClient 可关闭的HTTP客户端 * @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.baseUrl = baseUrl.endsWith("/") ? baseUrl.substring(0, baseUrl.length() - 1) : baseUrl;
this.closeableHttpClient = closeableHttpClient; this.closeableHttpClient = closeableHttpClient;
this.socketTimeout = socketTimeout;
this.connectTimeout = connectTimeout;
this.connectRequestTimeout = connectRequestTimeout;
clientInit();
}
public JHApiClient() {
clientInit();
}
/**
* 初始化客户端
*/
public void clientInit(){
this.requestConfig = RequestConfig.custom() this.requestConfig = RequestConfig.custom()
.setSocketTimeout(socketTimeout) .setSocketTimeout(socketTimeout)
.setConnectTimeout(connectTimeout) .setConnectTimeout(connectTimeout)
@@ -81,14 +102,13 @@ public class JHApiClient {
mapper = new ObjectMapper(); mapper = new ObjectMapper();
mapper.setTimeZone(TimeZone.getTimeZone("GMT+8")); mapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
mapper.setDateFormat(new SimpleDateFormat(DatePattern.NORM_DATETIME_PATTERN)); 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的连接客户端 * HTTP的连接客户端
*/ */
private final CloseableHttpClient closeableHttpClient; private CloseableHttpClient closeableHttpClient;
/** /**