Skip to content

Commit 17d26f7

Browse files
author
zhanq
committed
feat: 统一异常处理并封装响应头限流信息
- 所有公共API方法添加 throws ApiErrorException - 创建 BaseResult 基类和 RateLimit 类封装限流信息 - 优化 codec 类代码风格,提取常量和方法 - 删除 AdminApi 相关代码 - 更新文档和测试示例
1 parent b4a8c4f commit 17d26f7

30 files changed

Lines changed: 361 additions & 78 deletions

README.md

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,40 @@ cn.jiguang.sdk.exception.ApiErrorException
9595
```java
9696
try {
9797
PushSendResult result = pushApi.send(param);
98-
log.info("result:{}", result);
98+
log.info("send success:{}", result);
99+
log.info("send rateLimit:{}", result.getRateLimit());
99100
} catch (ApiErrorException e) {
100-
int httpStatus = e.getStats();
101-
int errorCode = e.getApiError().getError().getCode();
102-
String errorMessage = e.getApiError().getError().getMessage();
103-
log.error("httpStatus:{},errorCode:{},errorMessage:{}", httpStatus, errorCode, errorMessage);
104-
e.printStackTrace();
101+
log.error("send error:{}", e.getApiError());
102+
log.error("send rateLimit:{}", e.getRateLimit());
103+
}
104+
```
105+
106+
错误信息字段说明:
107+
```java
108+
int httpStatus = e.getStats(); // HTTP状态码
109+
int errorCode = e.getApiError().getError().getCode(); // 错误码
110+
String errorMessage = e.getApiError().getError().getMessage(); // 错误信息
111+
RateLimit rateLimit = e.getRateLimit(); // 限流信息
112+
```
113+
114+
### 响应头信息
115+
所有成功响应的Result对象都包含限流信息,可通过 `getRateLimit()` 方法获取:
116+
117+
```java
118+
PushSendResult result = pushApi.send(param);
119+
log.info("rateLimit:{}", result.getRateLimit());
120+
121+
// 获取具体字段
122+
RateLimit rateLimit = result.getRateLimit();
123+
Integer limit = rateLimit.getLimit(); // 单位时间内最大请求次数
124+
Integer remaining = rateLimit.getRemaining(); // 单位时间内剩余请求次数
125+
Integer reset = rateLimit.getReset(); // 限流重置时间(秒)
126+
```
127+
128+
异常中也包含限流信息:
129+
```java
130+
catch (ApiErrorException e) {
131+
log.error("rateLimit:{}", e.getRateLimit());
105132
}
106133
```
107134

example-for-spring/src/test/java/cn/jiguang/app/api/PushApiTest.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,11 @@ public void send() {
119119
// 发送
120120
try {
121121
PushSendResult result = pushApi.send(param);
122-
log.info("result:{}", result);
122+
log.info("send success:{}", result);
123+
log.info("send rateLimit:{}", result.getRateLimit());
123124
} catch (ApiErrorException e) {
124-
int httpStatus = e.getStats();
125-
int errorCode = e.getApiError().getError().getCode();
126-
String errorMessage = e.getApiError().getError().getMessage();
127-
log.error("httpStatus:{},errorCode:{},errorMessage:{}", httpStatus, errorCode, errorMessage);
128-
e.printStackTrace();
125+
log.error("send error:{}", e.getApiError());
126+
log.error("send rateLimit:{}", e.getRateLimit());
129127
}
130128
}
131129

jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/device/AliasGetResult.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package cn.jiguang.sdk.bean.device;
22

3+
import cn.jiguang.sdk.bean.BaseResult;
34
import cn.jiguang.sdk.enums.platform.Platform;
45
import com.fasterxml.jackson.annotation.JsonFormat;
56
import com.fasterxml.jackson.annotation.JsonProperty;
67
import lombok.Data;
8+
import lombok.EqualsAndHashCode;
79

810
import java.time.LocalDate;
911
import java.util.List;
1012

1113
@Data
12-
public class AliasGetResult {
14+
@EqualsAndHashCode(callSuper = true)
15+
public class AliasGetResult extends BaseResult {
1316

1417
@JsonProperty("data")
1518
private List<Data> data;

jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/device/DeviceGetResult.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package cn.jiguang.sdk.bean.device;
22

3+
import cn.jiguang.sdk.bean.BaseResult;
34
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
45
import com.fasterxml.jackson.annotation.JsonInclude;
56
import com.fasterxml.jackson.annotation.JsonProperty;
67
import lombok.Data;
8+
import lombok.EqualsAndHashCode;
79

810
import java.util.List;
911

1012
@Data
13+
@EqualsAndHashCode(callSuper = true)
1114
@JsonIgnoreProperties(ignoreUnknown = true)
12-
public class DeviceGetResult {
15+
public class DeviceGetResult extends BaseResult {
1316

1417
@JsonProperty("tags")
1518
@JsonInclude(JsonInclude.Include.NON_NULL)

jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/device/DeviceStatusGetResult.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package cn.jiguang.sdk.bean.device;
22

3+
import cn.jiguang.sdk.bean.BaseResult;
34
import com.fasterxml.jackson.annotation.JsonAnySetter;
45
import com.fasterxml.jackson.annotation.JsonFormat;
56
import com.fasterxml.jackson.annotation.JsonInclude;
67
import com.fasterxml.jackson.annotation.JsonProperty;
78
import lombok.Data;
9+
import lombok.EqualsAndHashCode;
810
import lombok.extern.slf4j.Slf4j;
911

1012
import java.time.LocalDateTime;
@@ -13,7 +15,8 @@
1315

1416
@Slf4j
1517
@Data
16-
public class DeviceStatusGetResult {
18+
@EqualsAndHashCode(callSuper = true)
19+
public class DeviceStatusGetResult extends BaseResult {
1720

1821
@JsonInclude(JsonInclude.Include.NON_NULL)
1922
private Map<String, DeviceStatus> results = new HashMap<>();

jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/device/TagGetResult.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package cn.jiguang.sdk.bean.device;
22

3+
import cn.jiguang.sdk.bean.BaseResult;
34
import com.fasterxml.jackson.annotation.JsonProperty;
45
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
57

68
@Data
7-
public class TagGetResult {
9+
@EqualsAndHashCode(callSuper = true)
10+
public class TagGetResult extends BaseResult {
811

912
@JsonProperty("result")
1013
private Boolean result;

jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/device/TagsGetResult.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package cn.jiguang.sdk.bean.device;
22

3+
import cn.jiguang.sdk.bean.BaseResult;
34
import com.fasterxml.jackson.annotation.JsonProperty;
45
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
57

68
import java.util.List;
79

810
@Data
9-
public class TagsGetResult {
11+
@EqualsAndHashCode(callSuper = true)
12+
public class TagsGetResult extends BaseResult {
1013

1114
@JsonProperty("tags")
1215
private List<String> tags;

jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/file/FileGetResult.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package cn.jiguang.sdk.bean.file;
22

3+
import cn.jiguang.sdk.bean.BaseResult;
34
import com.fasterxml.jackson.annotation.JsonFormat;
45
import com.fasterxml.jackson.annotation.JsonProperty;
56
import lombok.Data;
7+
import lombok.EqualsAndHashCode;
68

79
import java.time.LocalDateTime;
810

911
@Data
10-
public class FileGetResult {
12+
@EqualsAndHashCode(callSuper = true)
13+
public class FileGetResult extends BaseResult {
1114

1215
@JsonProperty("type")
1316
private String type;

jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/file/FileUploadResult.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package cn.jiguang.sdk.bean.file;
22

3+
import cn.jiguang.sdk.bean.BaseResult;
34
import com.fasterxml.jackson.annotation.JsonProperty;
45
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
57

68
@Data
7-
public class FileUploadResult {
9+
@EqualsAndHashCode(callSuper = true)
10+
public class FileUploadResult extends BaseResult {
811

912
@JsonProperty("file_id")
1013
private String fileId;

jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/file/FilesGetResult.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package cn.jiguang.sdk.bean.file;
22

3+
import cn.jiguang.sdk.bean.BaseResult;
34
import com.fasterxml.jackson.annotation.JsonProperty;
45
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
57

68
import java.util.List;
79

810
@Data
9-
public class FilesGetResult {
11+
@EqualsAndHashCode(callSuper = true)
12+
public class FilesGetResult extends BaseResult {
1013

1114
@JsonProperty("total_count")
1215
private Integer totalCount;

0 commit comments

Comments
 (0)