diff --git a/README.md b/README.md index 2094f0e..f3399bc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,20 @@ +# Api Result + +`api-result`,目标是让我们开发的API接口规范化,统一化,高效化。同时,它也是容易使用的。在经过无数次的实际项目检验,它也是准确的。 + +是API接口开发返回结果封装处理的一个解决方案,会让我们的接口开发变得非常容易,具有规范、易用、。 + +特性: + +1、规范 + +2、易用 + +是对API接口返回结果规范处理的一个解决方案,是在实际应用环境下产生了,并不断更新和完善, + 当然这只是我个人提出的解决方案。不足之处,还请多多指正。 + +

@@ -7,11 +23,6 @@ 对API接口返回结果规范封装解决方案

-

- - api-result -v - -

## 概述 @@ -20,11 +31,11 @@ ## 快速开始 -## 方法 +已经将jar发布到 [中央仓库](https://search.maven.org/search?q=g:com.fengwenyi%20AND%20a:api-result&core=gav) -## 计划 +添加依赖后,我们写如下的代码 -基础 +## 方法 -自定义错误内容 +## 版本说明 diff --git a/images/.DS_Store b/images/.DS_Store index 5008ddf..ea9a8f1 100644 Binary files a/images/.DS_Store and b/images/.DS_Store differ diff --git a/pom.xml b/pom.xml index bf3e6e5..e8d54c8 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.fengwenyi api-result - 1.0.1 + 2.0.0 jar api-result 对API接口返回结果规范封装解决方案 @@ -21,6 +21,7 @@ UTF-8 1.8 2.9.8 + 4.12 @@ -35,6 +36,14 @@ provided + + + junit + junit + ${junit.version} + test + + diff --git a/src/main/java/com/fengwenyi/api_result/helper/ApiResultHelper.java b/src/main/java/com/fengwenyi/api_result/helper/ApiResultHelper.java new file mode 100644 index 0000000..d0f13a0 --- /dev/null +++ b/src/main/java/com/fengwenyi/api_result/helper/ApiResultHelper.java @@ -0,0 +1,64 @@ +package com.fengwenyi.api_result.helper; + +import com.fengwenyi.api_result.model.ApiResultModel; + +/** + * 接口结果返回封装帮助工具类 + * + *

+ * 该工具类操作的实体类是:{@link com.fengwenyi.api_result.model.ApiResultModel} + *

+ * + *

+ * 我们提供了如下三个方法: + *

+ * + * + * + * @author Erwin Feng + * @since 2019-08-21 10:47 + */ +public class ApiResultHelper { + + /** + * 成功,并返回数据 + * @param code 返回码 + * @param message 描述信息 + * @param data 数据 + * @param 返回码类型 + * @param 数据类型 + * @return 返回结果封装 {@link ApiResultModel} + */ + public static ApiResultModel success(S code, String message, T data) { + return new ApiResultModel<>(code, message, data); + } + + /** + * 成功,无数据返回 + * @param code 返回码 + * @param message 描述信息 + * @param 返回码类型 + * @param 数据类型 + * @return 返回结果封装 {@link ApiResultModel} + */ + public static ApiResultModel success(S code, String message) { + return new ApiResultModel<>(code, message, null); + } + + /** + * 失败,无数据返回 + * @param code 返回码 + * @param message 描述信息 + * @param 返回码类型 + * @param 数据类型 + * @return 返回结果封装 {@link ApiResultModel} + */ + public static ApiResultModel error(S code, String message) { + return new ApiResultModel<>(code, message); + } + +} diff --git a/src/main/java/com/fengwenyi/api_result/helper/ResultHelper.java b/src/main/java/com/fengwenyi/api_result/helper/ResultHelper.java index 7020f26..8a30676 100644 --- a/src/main/java/com/fengwenyi/api_result/helper/ResultHelper.java +++ b/src/main/java/com/fengwenyi/api_result/helper/ResultHelper.java @@ -1,9 +1,24 @@ package com.fengwenyi.api_result.helper; -import com.fengwenyi.api_result.model.ApiResultModel; +import com.fengwenyi.api_result.model.ResultModel; /** - * 结果返回 + * 结果返回封装帮助工具类 + * + *

+ * 该工具类操作的实体类是:{@link com.fengwenyi.api_result.model.ResultModel} + *

+ * + *

+ * 我们提供了如下三个方法: + *

+ * + *
    + *
  • success(String message, T data):成功,并返回的数据的方法
  • + *
  • success(String message):成功,不返回数据
  • + *
  • error(String message):失败
  • + *
+ * * @author Erwin Feng * @since 2019-08-02 18:14 */ @@ -11,39 +26,32 @@ public class ResultHelper { /** * 成功,并返回数据 - * @param code 返回码 * @param message 描述信息 * @param data 数据 - * @param 返回码类型 * @param 数据类型 - * @return 返回结果封装 {@link com.fengwenyi.api_result.model.ApiResultModel} + * @return 返回结果封装 {@link com.fengwenyi.api_result.model.ResultModel} */ - public static ApiResultModel success(S code, String message, T data) { - return new ApiResultModel<>(code, message, data); + public static ResultModel success(String message, T data) { + return new ResultModel<>(message, data); } /** * 成功,无数据返回 - * @param code 返回码 - * @param message 描述信息 - * @param 返回码类型 * @param 数据类型 - * @return 返回结果封装 {@link com.fengwenyi.api_result.model.ApiResultModel} + * @return 返回结果封装 {@link com.fengwenyi.api_result.model.ResultModel} */ - public static ApiResultModel success(S code, String message) { - return new ApiResultModel<>(code, message, null); + public static ResultModel success(String message) { + return new ResultModel<>(message, null); } /** * 失败,无数据返回 - * @param code 返回码 * @param message 描述信息 - * @param 返回码类型 * @param 数据类型 - * @return 返回结果封装 {@link com.fengwenyi.api_result.model.ApiResultModel} + * @return 返回结果封装 {@link com.fengwenyi.api_result.model.ResultModel} */ - public static ApiResultModel error(S code, String message) { - return new ApiResultModel<>(code, message); + public static ResultModel error(String message) { + return new ResultModel<>(message); } } diff --git a/src/main/java/com/fengwenyi/api_result/model/ApiResultModel.java b/src/main/java/com/fengwenyi/api_result/model/ApiResultModel.java index 63e385f..1db0f71 100644 --- a/src/main/java/com/fengwenyi/api_result/model/ApiResultModel.java +++ b/src/main/java/com/fengwenyi/api_result/model/ApiResultModel.java @@ -3,7 +3,21 @@ import com.fasterxml.jackson.annotation.JsonInclude; /** - * 接口返回实体 + * 接口结果实体封装模型 + * + *

+ * 该实体模型继承了ResultModel,所以具备它的全部属性 + *

+ * + *

+ * 有时我们关注结果是否成功,如果错误,不作处理; + * 有时,我们需要对错误进行处理,考虑到这个问题, + * 我们增加了这个实体,并且增加了属性:code + *

+ * + *

+ * 参数code的类型,我们允许是泛型,可以根据自己的系统进行合理规划 + *

* * @author Erwin Feng * @since 2019-07-23 15:03 @@ -18,20 +32,63 @@ public class ApiResultModel extends ResultModel { */ private S code; + /** + * 无参数构造方法 + */ public ApiResultModel() { } + /** + * 构造方法 + * @param code 返回码 + * @param message 描述信息 + */ public ApiResultModel(S code, String message) { super(message); this.code = code; } + /** + * 构造方法 + * @param code 返回码 + * @param message 描述信息 + * @param data 数据 + */ public ApiResultModel(S code, String message, T data) { super(message, data); this.code = code; } + /** + * 参数code的Get方法 + * @return 返回码 + */ public S getCode() { return code; } + + /** + * 重写 toString() + * @return 有值的参数拼接成的一个字符串 + */ + @Override + public String toString() { + StringBuilder stringBuilder = new StringBuilder("resultModel {"); + // code + if (code != null) + stringBuilder.append("\"code\"").append(":").append(code) + .append(", "); + // success + stringBuilder.append("\"success\"").append(":").append(super.getSuccess()) + .append(", "); + // message + stringBuilder.append("\"message\"").append(":") + .append("\"").append(super.getSuccess()).append("\""); + // data + if (super.getData() != null) + stringBuilder.append(", ").append("\"data\"").append(":") + .append("\"").append(super.getData()).append("\""); + stringBuilder.append("}"); + return stringBuilder.toString(); + } } diff --git a/src/main/java/com/fengwenyi/api_result/model/ResultModel.java b/src/main/java/com/fengwenyi/api_result/model/ResultModel.java index 7068959..e540ea8 100644 --- a/src/main/java/com/fengwenyi/api_result/model/ResultModel.java +++ b/src/main/java/com/fengwenyi/api_result/model/ResultModel.java @@ -5,7 +5,25 @@ import java.io.Serializable; /** - * 返回实体 + * 结果实体封装模型 + * + *

+ * 包含三个属性: + *

+ * + *
    + *
  • success:返回结果标识,true / false(成功 / 失败)
  • + *
  • message:描述信息,错误时,可以在这里填写错误的详细信息
  • + *
  • data:数据,成功并且需要返回数据时,才有该参数
  • + *
+ * + *

+ * 错误时,只会返回success和message,成功并且需要返回数据时,才会返回三个参数,即success、message和data + *

+ * + *

+ * 数据是一个泛型(T),可以是基本数据类型,Map,对象或是一个数组(数组里面可以包含多个对象) + *

* * @author Erwin Feng * @since 2019-07-23 15:01 @@ -30,28 +48,73 @@ public class ResultModel implements Serializable { */ private T data; + /** + * 无参数构造方法 + */ public ResultModel() { } + /** + * 构造方法 + * @param message 描述信息 + * @param data 数据 + */ public ResultModel(String message, T data) { this.success = true; this.message = message; this.data = data; } + /** + * 构造方法 + * @param message 描述信息 + */ public ResultModel(String message) { this.message = message; } + /** + * 参数success的Get方法 + * @return 结果标识,true / false(成功 / 失败) + */ public Boolean getSuccess() { return success; } + /** + * 参数message的Get方法 + * @return 描述信息 + */ public String getMessage() { return message; } + /** + * 参数data的Get方法 + * @return 数据 + */ public T getData() { return data; } + + /** + * 重写 toString() + * @return 有值的参数拼接成的一个字符串 + */ + @Override + public String toString() { + StringBuilder stringBuilder = new StringBuilder("resultModel {"); + // success + stringBuilder.append("\"success\"").append(":").append(success) + .append(", "); + // message + stringBuilder.append("\"message\"").append(":") + .append("\"").append(message).append("\""); + // data + if (data != null) + stringBuilder.append(", ").append("\"data\"").append(":") + .append("\"").append(data).append("\""); + stringBuilder.append("}"); + return stringBuilder.toString(); + } } diff --git a/src/test/java/com/fengwenyi/api_result/helper/HelperTests.java b/src/test/java/com/fengwenyi/api_result/helper/HelperTests.java new file mode 100644 index 0000000..549d5d7 --- /dev/null +++ b/src/test/java/com/fengwenyi/api_result/helper/HelperTests.java @@ -0,0 +1,46 @@ +package com.fengwenyi.api_result.helper; + +import com.fengwenyi.api_result.model.ApiResultModel; +import com.fengwenyi.api_result.model.ResultModel; +import org.junit.Test; + +/** + * Helper测试 + * @author Erwin Feng + * @since 2019-08-21 10:58 + */ +public class HelperTests { + + // 测试 ResultHelper + @Test + public void testResultHelper() { + // 成功,无数据 + ResultModel resultModel = ResultHelper.success("Success"); + System.out.println(resultModel); // resultModel {"success":true, "message":"Success"} + + // 成功,有数据 + ResultModel resultModel2 = ResultHelper.success("Success", "this is data"); + System.out.println(resultModel2); // resultModel {"success":true, "message":"Success", "data":"this is data"} + + // 失败 + ResultModel resultModel3 = ResultHelper.error("This is error info"); + System.out.println(resultModel3); // resultModel {"success":false, "message":"This is error info"} + } + + // 测试 ApiResultHelper + @Test + public void testApiResultHelper() { + // 成功,无数据 + ApiResultModel apiResultModel1 = ApiResultHelper.success(0, "Success"); + System.out.println(apiResultModel1); // resultModel {"code":0, "success":true, "message":"true"} + + // 成功,有数据 + ApiResultModel apiResultModel2 = ApiResultHelper.success(0, "Success", "This is data"); + System.out.println(apiResultModel2); // resultModel {"code":0, "success":true, "message":"true", "data":"This is data"} + + // 失败 + ApiResultModel apiResultModel3 = ApiResultHelper.success(1000000, "This is error info"); + System.out.println(apiResultModel3); // resultModel {"code":1000000, "success":true, "message":"true"} + } + +} diff --git a/version/V1.0.0.BUILD.md b/version/V1.0.0.BUILD.md deleted file mode 100644 index efd986c..0000000 --- a/version/V1.0.0.BUILD.md +++ /dev/null @@ -1,9 +0,0 @@ -## V1.0.0.BUILD - -- 由原项目JavaLib-result更命名`api-result` - -- 包名更改为 `net.iutil` - -- 类名 `Result` 更改为 `ApiResult` - -- 字符串工具类 (`StringUtils`) 防止调用,不公开 \ No newline at end of file