欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通过泛型返回数据给客户端的操作

程序员文章站 2024-03-25 08:35:40
...

我需要用户注册成功后返回给用户成功或者失败的消息
首先写了个泛型类 成功和失败都会New一个ResponseVo返回给前端 携带status和msg返回

@Data
@JsonInclude(value =JsonInclude.Include.NON_NULL)
public class ResponseVo<T> {

    private Integer status;

    private String msg;

    private T data;

    public ResponseVo(Integer status, String msg) {
        this.status = status;
        this.msg = msg;
    }

    public static <T>ResponseVo<T> success(String msg){

        return new ResponseVo<>(0,msg);
    }
}
@JsonInclude(value =JsonInclude.Include.NON_NULL)

这个注解 可以让返回值为null的 多余数据不返回给前端

controller层:

@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {

    @PostMapping("/register")
    public ResponseVo register(@RequestBody User user){
        log.info("username={}",user.getUsername());
        return ResponseVo.success("注册成功");
    }
}

使用postman发送请求
通过泛型返回数据给客户端的操作
请求成功 返回的Json没有多余的数据

为了区分不同返回的状态
写了个Enum来方便判断

@Getter
public enum  ResponseEnum {
    ERROR(-1,"服务端错误"),

    SUCCESS(0,"成功"),

    PASSOWRD_ERROR(1,"密码错误"),

    NEED_LOGIN(10,"用户未登录,请先登录"),

    ;

    Integer code;

    String desc;
    
    //传入对应的字段的和code
    ResponseEnum(Integer code , String desc){
        this.code= code;
        this.desc= desc;
    }
}

通过泛型返回数据给客户端的操作
在后期开发和使用中就更方便 也不用修改源码 直接去enum中改就行

相关标签: 记录