← 返回首页
SpringBoot基础教程(九)
发表时间:2020-10-20 23:07:07
json封装

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数据如下: