当前位置:   article > 正文

spring boot --- result 统一的结果集处理_springboot 结果集怎么写

springboot 结果集怎么写

1 url的命名

在实际开发中名词居多,见名知意
  • get 获取数据
  • post 添加数据
  • put 修改数据
  • delete 逻辑假删除

2 返回数据的格式

2.1 一般返回的是json数据 {状态码: 信息}

**一些常用的返回状态码 **

https://help.aliyun.com/knowledge_detail/36393.html?spm=5176.10695662.1996646101.searchclickresult.33f71bb4EstSUR&aly_as=Gf1sQix

2.2 直接在Controller中调用静态方法

2.2.1 先创建一个返回集的接口
public interface Result<T> {

}
  • 1
  • 2
  • 3
2.2.2 定义返回信息枚举类型
public enum StatusTypeEnum {
    /**
     * 200为成功
     * 404为错误信息
     */
    SUCCESS(200,"success"),
    ERROR(404,"error");

    private String msg;
    private int status;

    StatusTypeEnum(int status, String msg) {
        this.status = status;
        this.msg = msg;
    }
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
2.2.3 创建successResult返回集继承返回集接口
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SuccessResult<T> implements Result<T> {
    private StatusTypeEnum status;
    private T data;

    public static SuccessResult succes() {
        return new SuccessResult<>(StatusTypeEnum.SUCCESS, null);
    }

    public static <T> SuccessResult succes(T data) {
        return new SuccessResult<>(StatusTypeEnum.SUCCESS, data);
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
2.2.4 创建errorResult返回集继承返回集接口
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ErrorResult implements Result {
    private StatusTypeEnum status;
    private String msg;
    

    public static ErrorResult error(int status, Exception ex) {
        return new ErrorResult(StatusTypeEnum.ERROR, ex.getMessage());
    }
    public static ErrorResult error() {
        return new ErrorResult(StatusTypeEnum.ERROR, "错误");
    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

定义的内容需要根据业务不同来定,这个只是大体架构

2.3 利用AOP切面变成

@RestControllerAdvice + 实现ResponseBodyAdvice

将Result 封装到aop 中, Controller层 直接返回 参数,让aop去判断,返回的Result

@RestControllerAdvice
@Slf4j
public class GlobalResultAdvice  implements ResponseBodyAdvice {
    @Override
    public boolean supports(MethodParameter returnType, Class converterType) {
        log.error("supports");
        //为false 将不执行下面的aop方法
        return true;
    }

    /**
     *
     * @param body
     * @param returnType
     * @param selectedContentType
     * @param selectedConverterType
     * @param request
     * @param response
     * @return
     */
    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
        Object resp = null;
        if (body instanceof SuccessResult){
            resp = body;
        }else{
            resp =  SuccessResult.succes(body);
        }

        return resp;
    }

}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/575964
推荐阅读
相关标签
  

闽ICP备14008679号