SpringBoot-(十四)RESTful统一结果返回

本文最后更新于:March 12, 2022 am

SpringBoot框架中有两个非常重要的策略:开箱即用和约定优于配置。其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

目录

状态码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.tothefor.resultR;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
* @Author DragonOne
* @Date 2022/3/4 11:39
* @墨水记忆 www.tothefor.com
*/

@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public enum RCode {

/**
* 成功
*/
SUCCESS(true,200, "成功"),

/**
* 失败
*/
FAIL(false,500, "失败"),

/**
* 未授权
*/
FAIL_401(false,401, "未授权")
;

/**
* @Author DragonOne
* @Date 2022/3/4 11:54
* @墨水记忆 www.tothefor.com
* @属性 statusFlag
* @作用 判断是否成功
*/
private Boolean statusFlag;

/**
* @Author DragonOne
* @Date 2022/3/4 11:56
* @墨水记忆 www.tothefor.com
* @属性 statusCode
* @作用 返回结果状态码
*/
private Integer statusCode;

/**
* @Author DragonOne
* @Date 2022/3/4 11:56
* @墨水记忆 www.tothefor.com
* @属性 statusMessage
* @作用 提示信息
*/
private String statusMessage;


}

封装返回结果类

方法名对应状态码中的名称。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package com.tothefor.resultR;

import lombok.*;

import java.io.Serializable;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class R<T> {

private Boolean statusFlag;
private Integer statusCode;
private String statusMessage;

/**
* @Author DragonOne
* @Date 2022/3/4 12:04
* @墨水记忆 www.tothefor.com
* @属性 timestamp
* @作用 接口请求时间
*/
private long timestamp;

/**
* @Author DragonOne
* @Date 2022/3/4 11:59
* @墨水记忆 www.tothefor.com
* @属性 data
* @作用 携带后台传入的数据
*/
private T data;

/**
* @Author DragonOne
* @Date 2022/3/4 13:04
* @墨水记忆 www.tothefor.com
* @方法 SUCCESS
* @作用 成功,无数据
* @参数说明
* @return
*/
public static <T> R<T> SUCCESS(){
return SUCCESS(null);
}

/**
* @Author DragonOne
* @Date 2022/3/4 12:11
* @墨水记忆 www.tothefor.com
* @方法 SUCCESS
* @作用 成功,有数据
* @参数说明
* @return
*/
public static <T> R<T> SUCCESS(T data){
return R.<T>builder().data(data)
.statusFlag(RCode.SUCCESS.getStatusFlag())
.statusCode(RCode.SUCCESS.getStatusCode())
.statusMessage(RCode.SUCCESS.getStatusMessage())
.timestamp(System.currentTimeMillis())
.build();
}


/**
* @Author DragonOne
* @Date 2022/3/4 12:38
* @墨水记忆 www.tothefor.com
* @方法 FAIL
* @作用 失败,无数据
* @参数说明
* @return
*/
public static <T extends Serializable> R<T> FAIL() {
return FAIL(null);
}

/**
* @Author DragonOne
* @Date 2022/3/4 12:38
* @墨水记忆 www.tothefor.com
* @方法 FAIL
* @作用 失败,有数据
* @参数说明
* @return
*/
public static <T> R<T> FAIL(T data){
return R.<T>builder().data(data)
.statusFlag(RCode.FAIL.getStatusFlag())
.statusCode(RCode.FAIL.getStatusCode())
.statusMessage(RCode.FAIL.getStatusMessage())
.timestamp(System.currentTimeMillis())
.build();
}

/**
* @Author DragonOne
* @Date 2022/3/4 13:12
* @墨水记忆 www.tothefor.com
* @方法 FAIL_401
* @作用 失败,未授权
* @参数说明
* @return
*/
public static <T> R<T> FAIL_401(){
return R.<T>builder()
.statusFlag(RCode.FAIL_401.getStatusFlag())
.statusCode(RCode.FAIL_401.getStatusCode())
.statusMessage(RCode.FAIL_401.getStatusMessage())
.timestamp(System.currentTimeMillis())
.build();
}


}