SpringBoot 通用返回类设计

在项目中通常需要为前端设计通过的返回类,返回的格式为:

{
    "status": "success",
    "data": {...}
}

定义通过返回类:CommonReturnType

/**
 * 通用返回结果类
 * 包含请求结果 status : "success" or "failed"
 * 包含请求数据 data : {}
 */
public class CommonReturnType {

    // 表明对应请求的返回处理结果为: "success" or "failed"
    private String status;

    // 若status=success, 则data内返回前端需要的json数据
    // 若status=failed, 则data内使用通用的错误码格式
    private Object data;

    // 通用静态工厂方法
    public static CommonReturnType create(Object result){
        return CommonReturnType.create(result, "success");
    }

    // 封装返回数据data
    public static CommonReturnType create(Object result, String status){
        CommonReturnType returnType = new CommonReturnType();
        returnType.setStatus(status);
        returnType.setData(result);
        return returnType;
    }


    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

在Controller中使用

    @GetMapping("/get")
    @ResponseBody
    public CommonReturnType getUser(@RequestParam(name = "id") Integer id) throws BusinessException {

        // 调用service服务获取对应id的用户对象并返回给前端
        UserModel userModel = userService.getUserById(id);

        // 获取对应的用户不存在
        if(userModel == null){
            throw new BusinessException(EnumBusinessError.USER_NOT_EXIST);
        }

        // 将核心领域模型用户对象转换为可供UI使用的ViewObject,而不是直接将UserModel返回给前端
        UserVO userVO = convertFromModel(userModel);

        // 返回通用对象
        return CommonReturnType.create(userVO);
    }
posted @ 2019-02-23 11:54  Vincen_shen  阅读(3564)  评论(0编辑  收藏  举报