1. 编写目的
编写一个RestControllerHelper类,统一规范一下前后端交互时的json格式。
格式如下:
{
"msg": "success",
"data": "json数据",
"code": 200
}
2. RestControllerHelper类
package cn.langlang.langmovie.util;
import java.util.HashMap;
import java.util.Map;
/**
* @author Smileyan
*/
public class RestControllerHelper {
/**
* RestControllerHelper的toJson常量
*/
private static final String RESULT_CODE = "code";
private static final String RESULT_MSG = "msg";
private static final String RESULT_DATA = "data";
/**
* 200: 成功。
* 401: 当前请求需要用户验证。
* 403:权限错误。
* 404: 请求的资源未找到。
* 408:请求超时。
*/
public static final int SUCCESS = 200;
public static final int UNLOGIN = 401;
public static final int FORBIDDEN = 403;
public static final int NOT_FOUND = 404;
public static final int TIMEOUT = 408;
/**
* code: 状态码
* msg: 状态码消息
* data: 数据
*/
private Integer code;
private String msg;
private Object data;
public RestControllerHelper() {
this.code = SUCCESS;
}
public RestControllerHelper(Integer code,Object data) {
this.code = code;
this.data = data;
}
public RestControllerHelper(Integer code,Object data,String msg) {
this.code = code;
this.data = data;
this.msg = msg;
}
/**
* toJsonMap
* @return
*/
public Map<String,Object> toJsonMap() {
Map<String,Object> map = new HashMap<>(3);
map.put(RESULT_CODE,this.code);
map.put(RESULT_MSG,this.msg);
map.put(RESULT_DATA,this.data);
return map;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
3. 使用方法例子
package cn.langlang.langmovie.controller;
import cn.langlang.langmovie.util.RestControllerHelper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.Map;
/**
* @author Smileyan
*/
@RestController
public class UserController {
@RequestMapping("/test")
private Map<String,Object> test(HttpServletResponse response) {
RestControllerHelper helper = new RestControllerHelper();
helper.setCode(RestControllerHelper.SUCCESS);
helper.setMsg("success");
// 这里setData可以是某个类的对象,可以是链表等等
helper.setData(new Date());
return helper.toJsonMap();
}
}
4. 总结
为了方便前后端的交互,最好是统一一下json格式,确保对方知道返回的结果是怎么样的。比如如果返回结果code是401,表示未登录,前端开发人员应该对其进行处理,提示没有登录,并跳转到登录页面等。
Smileyan 2019年4月11日