SpringBoot的Controller一律返回json,所以我有必要把json数据和返回json的行为进行统一封装,便于以后的扩充和维护。
1.定义json数据结构
/**
* @Description: 状态码类
* @Author: simoniu
* @Date: 2020-09-27 22:53
*/
public interface ResultCode {
public static Integer SUCCESS = 200;//成功
public static Integer ERROR = 500;//错误
public static Integer FAIL = 400; //失败
}
2.定义返回json的操作
import lombok.Data;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* @Description: 统一返回的结果类
* @Author: simoniu
* @Date: 2020-09-27 22:55
*/
@Data
public class R implements Serializable {
private Integer code;
private String message;
private Object data; //Map
//把构造方法私有
private R() {
}
//成功静态方法
public static R ok() {
R r = new R();
r.setCode(ResultCode.SUCCESS);
r.setMessage("成功");
return r;
}
public static R ok(String msg) {
R r = R.ok();
r.setMessage(msg);
return r;
}
public static R ok(String msg, Object data) {
R r = R.ok();
r.setMessage(msg);
r.setData(data);
return r;
}
//失败静态方法
public static R error() {
R r = new R();
r.setCode(ResultCode.ERROR);
r.setMessage("错误");
return r;
}
public static R error(String msg) {
R r = R.error();
r.setMessage(msg);
return r;
}
public static R fail() {
R r = new R();
r.setMessage("失败");
r.setCode(ResultCode.FAIL);
return r;
}
public static R fail(String msg) {
R r = R.fail();
r.setMessage(msg);
return r;
}
}
3.测试Controller返回封装后的Json数据
@RestController
@RequestMapping("users")
public class UsersController {
@GetMapping("auth")
public R login(String username, String password){
//判断一下,我们规定用户名必须是admin,密码必须是admin才能登录成功。
if("admin".equals(username)&&"admin".equals(password)){
Users loginUser = new Users(100,username,password);
return R.ok("loginSuccess",loginUser);
}else{
return R.fail("loginFailure");
}
}
}
测试用户登录接口。返回json数据如下:
