Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0d26db1

Browse files
[add] 加入统一响应类ResponseData
1 parent 8db6225 commit 0d26db1

File tree

4 files changed

+131
-10
lines changed

4 files changed

+131
-10
lines changed

‎web/src/main/java/demo/web/controller/RestfulController.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package demo.web.controller;
22

3+
import demo.web.controller.base.ResponseData;
34
import demo.web.controller.req.User;
45
import demo.web.handler.GlobalExceptionHandler;
56
import demo.web.service.AsyncTaskService;
@@ -110,8 +111,8 @@ public User param(@Valid User user) {
110111
* 异常类型:{@link org.springframework.web.bind.MethodArgumentNotValidException}
111112
*/
112113
@PostMapping("/param1")
113-
public User param1(@Valid @RequestBody User user) {
114-
return user;
114+
public ResponseData param1(@Valid @RequestBody User user) {
115+
return ResponseData.successObj().putData("user", user);
115116
}
116117

117118
/**
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package demo.web.controller.base;
2+
3+
/**
4+
* parent
5+
* demo.web.controller.base
6+
* 返回状态码
7+
*
8+
* @author BlueDriver
9+
* @email cpwu@foxmail.com
10+
* @date 2019年04月01日 10:16 Monday
11+
*/
12+
public interface ResponseCode {
13+
/**
14+
* 成功success
15+
*/
16+
int SUCCESS = 0;
17+
/**
18+
* 异常Exception
19+
*/
20+
int EXCEPTION = 1;
21+
/**
22+
* 参数错误Parameter error
23+
*/
24+
int PARAM_INVALID = 2;
25+
/**
26+
* 无权限NO permission
27+
*/
28+
int NO_PERMISSION = 3;
29+
/**
30+
* 状态异常
31+
*/
32+
int STATUS_ERROR = 4;
33+
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package demo.web.controller.base;
2+
3+
import lombok.Data;
4+
import lombok.experimental.Accessors;
5+
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
9+
/**
10+
* parent
11+
* demo.web.controller.base
12+
* 统一响应数据
13+
*
14+
* @author BlueDriver
15+
* @email cpwu@foxmail.com
16+
* @date 2019年04月01日 10:03 Monday
17+
*/
18+
@Data
19+
@Accessors(chain = true)
20+
public class ResponseData {
21+
/**
22+
* 返回码
23+
*
24+
* @see ResponseCode
25+
*/
26+
private Integer code;
27+
/**
28+
* 说明
29+
*/
30+
private String msg;
31+
/**
32+
* 数据
33+
*/
34+
private Map<String, Object> data = new HashMap<>();
35+
/**
36+
* 扩展数据(根据实际需要赋值)
37+
*/
38+
private Object ext;
39+
40+
/**
41+
* 辅助构造方法
42+
* 成功返回,剩下的只需要赋值data即可
43+
*/
44+
public static ResponseData successObj() {
45+
return successObj(null);
46+
}
47+
48+
/**
49+
* 辅助构造方法,带data设置
50+
* 成功返回
51+
*/
52+
public static ResponseData successObj(Map<String, Object> data) {
53+
ResponseData responseData = new ResponseData();
54+
responseData.setCode(ResponseCode.SUCCESS);
55+
responseData.setMsg("处理成功");
56+
responseData.setData(data == null ? new HashMap<>() : data);
57+
return responseData;
58+
}
59+
60+
/**
61+
* 设置data
62+
*/
63+
public ResponseData putData(String key, Object value) {
64+
this.getData().put(key, value);
65+
return this;
66+
}
67+
68+
/**
69+
* 辅助构造方法
70+
* 异常返回,使用默认异常消息
71+
*/
72+
public static ResponseData exceptionObj(Exception e) {
73+
return exceptionObj(e, "发生异常:" + e.getMessage());
74+
}
75+
76+
/**
77+
* 辅助构造方法
78+
* 异常返回,带异常消息
79+
*/
80+
public static ResponseData exceptionObj(Exception e, String msg) {
81+
ResponseData responseData = new ResponseData();
82+
responseData.setCode(ResponseCode.EXCEPTION);
83+
responseData.setMsg(msg);
84+
//为便于排查异常,将异常类名赋值为ext
85+
responseData.setExt(e.getClass().getName());
86+
return responseData;
87+
}
88+
}

‎web/src/main/java/demo/web/handler/GlobalExceptionHandler.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,14 @@
3333
@ResponseBody
3434
public class GlobalExceptionHandler {
3535
/**
36-
* 处理参数校验异常
36+
* 处理多参校验异常
3737
*/
3838
@ExceptionHandler(value = {MethodArgumentNotValidException.class, BindException.class})
3939
private ResponseData paramHandler(Exception e) {
4040
ResponseData responseData = new ResponseData();
4141
responseData.setCode(ResponseCode.PARAM_INVALID);
4242
FieldError error;// = new FieldError("obj", "field", "default msg");
43-
//入参为对象
43+
//入参为对象(json)
4444
if (e instanceof MethodArgumentNotValidException) {
4545
MethodArgumentNotValidException ex = (MethodArgumentNotValidException) e;
4646
error = ex.getBindingResult().getFieldError();//如果错误不止一个,亲测好象是随机获取一个错误
@@ -49,21 +49,22 @@ private ResponseData paramHandler(Exception e) {
4949
BindException ex = (BindException) e;
5050
error = ex.getBindingResult().getFieldError();
5151
}
52-
responseData.setMsg(error.getField() + error.getDefaultMessage() + ":" + error.getRejectedValue());
52+
responseData.setMsg("参数非法:" + error.getDefaultMessage() + ": " +
53+
"[" + error.getField() + "=" + error.getRejectedValue() + "]");
5354
responseData.setExt(e.getClass().getName());
5455
return responseData;
5556
}
5657

5758
/**
58-
* 单个参数校验
59+
* 单个参数校验(键值对)
5960
*/
6061
@ExceptionHandler(value = ConstraintViolationException.class)
6162
@ResponseBody
6263
public ResponseData handleBindGetException(ConstraintViolationException e) {
6364
log.error("单个参数校验异常", e);
6465
ResponseData responseData = new ResponseData();
6566
responseData.setCode(ResponseCode.PARAM_INVALID)
66-
.setMsg(e.getMessage())
67+
.setMsg("参数非法:" + e.getMessage())
6768
.setExt(e.getClass().getName());
6869
return responseData;
6970
}
@@ -90,9 +91,7 @@ public ResponseData handleMax(MaxUploadSizeExceededException e) {
9091
private ResponseData defaultExceptionHandler(HttpServletRequest req, HttpServletResponse resp,
9192
HttpSession session, Exception e) {
9293
log.error("exception handler: ", e);
93-
ResponseData responseData = ResponseData.exceptionObj(e);
94-
responseData.setExt(e.getClass().getName());
95-
return responseData;
94+
return ResponseData.exceptionObj(e);
9695
}
9796

9897

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /