zoukankan      html  css  js  c++  java
  • 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);
        }
    
  • 相关阅读:
    JAVA并发编程学习笔记之ReentrantLock
    服务架构演进
    Java集群优化——dubbo+zookeeper构建高可用分布式集群
    Dubbo实例
    hessian学习
    JAVA分布式事务原理及应用
    了解AngularJS $resource
    AngularJS Resource:与 RESTful API 交互
    Hibernate解决高并发问题之:悲观锁 VS 乐观锁
    互联网金融高并发方案
  • 原文地址:https://www.cnblogs.com/vincenshen/p/10422150.html
Copyright © 2011-2022 走看看