Spring Boot(二)对返回结果的统一封装

拿走了什么前端

今天来讲下Spring Boot中统一返回结果的封装。bash

为何要封装结果?

来看一张没有封装的。微信

再看是通过封装过返回的数据。

从第二张能够看到多了,咱们自定义的结果状态、信息以及数据,在咱们正常开发的过程当中咱们须要给前端返回一些带有 状态码的结果,前端会根据这个结果来提示用户操做的结果,像这样成功的会返回 操做成功的消息提示

若是操做失败会返回失败的提示

因此咱们对结果的处理会很重要。

步骤

首先建立一个枚举用来RetCodeapp

public enum RetCode {
    //成功
    SUCCESS(200),

    //失败
    FAIL(400),

    //错误
    FALSE(404),

    //内部错误
    ERROR(500);

    private int code;

    private RetCode(Integer code){
        this.code = code;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }
}
复制代码

里面code的数值你能够根据实际来自定义~ 而后对结果处理的一个类测试

public class RetResult {
    private  Integer code;
    private String msg;
    private Object data;

    public RetResult(){
        this.code = Integer.valueOf(0);
        this.msg = "";
        this.data = null;
    }
    /**
     *返回状态码、信息、以及数据
     */
    public RetResult(Integer code, String msg, Object data) {
        this.code = code;
        this.msg = "";
        this.data = null;
    }
    /**
    *只返回状态码,以及信息能够用于失败时候来使用
    */
    public RetResult(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
        this.data = null;
    }
    /**
    *只返回状态码和数据
    */
    public RetResult(Integer code, Object data) {
        this.code = code;
        this.msg = "";
        this.data = data;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}
复制代码

其中msg是你想要返回的信息,code就是自定义的状态码了,data是要返回的数据,这里我采用了Object类型。并且这里我写了几个重载方法,能够根据本身的需求来灵活调整ui

改造Service、Controller

把咱们上节UserService类改造一下this

public RetResult queryUserById(Map<String,Object> map){
        if(map.get("user_id") == null){
            return new RetResult(RetCode.FAIL.getCode(),"id不能为空");
        }
        return new RetResult(RetCode.SUCCESS.getCode(),userMapper.queryUserById(Long.parseLong(map.get("user_id").toString())));
    }
复制代码

就是把咱们以前返回的数据给放到Data中了,而后UserController的改造spa

@RequestMapping(value = "/user/getUser")
    public RetResult getUser(@RequestBody Map<String ,Object> map){

        return userService.queryUserById(map);
    }
复制代码

其中Controller咱们能够集中来处理Exception这个之后会加上。 先测试若是咱们先不传数据返回的信息:code

而后传入正确数据来返回的:

这样体验就很好了~ 欢迎你们来关注个人微信公众号~

相关文章
相关标签/搜索