SpringMVC——数据传输协议&前后台协议联调

110 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情

统一结果封装

表现层与前端数据传输协议定义

将返回结果的数据进行统一,具体如何来做,大体的思路为:

  • 为了封装返回的结果数据:==创建结果模型类,封装数据到data属性中==
  • 为了封装返回的数据是何种操作及是否操作成功:==封装操作结果到code属性中==
  • 操作失败后为了封装返回的错误信息:==封装特殊消息到message(msg)属性中==

image.png 根据分析,我们可以设置统一数据返回结果类

public class Result{
	private Object data;
	private Integer code;
	private String msg;
}

表现层与前端数据传输协议实现

结果封装

步骤1:创建Result类
public class Result {
    private String msg;
    private Object data;
    private Integer code;

    public Result() {
    }

    public Result(Integer code,Object data)  {
        this.data = data;
        this.code = code;
    }

    public Result(Integer code,Object data,String msg) {
        this.msg = msg;
        this.data = data;
        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;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }
}
步骤2:定义返回码Code类
//状态码
public class Code {
    public static final Integer SAVE_OK = 20011;
    public static final Integer DELETE_OK = 20021;
    public static final Integer UPDATE_OK = 20031;
    public static final Integer GET_OK = 20041;

    public static final Integer SAVE_ERR = 20010;
    public static final Integer DELETE_ERR = 20020;
    public static final Integer UPDATE_ERR = 20030;
    public static final Integer GET_ERR = 20040;
}
步骤3:修改Controller类的返回值
@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private BookService bookService;

    @PostMapping
    public Result save(@RequestBody Book book) {
        boolean flag = bookService.save(book);
        return new Result(flag ? Code.SAVE_OK:Code.SAVE_ERR,flag);

    }

    @PutMapping
    public Result update(@RequestBody Book book) {
        boolean flag = bookService.update(book);
        return new Result(flag ? Code.UPDATE_OK:Code.UPDATE_ERR,flag);

    }
   @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) {
       boolean flag = bookService.delete(id);
       return new Result(flag ? Code.DELETE_OK:Code.DELETE_ERR,flag);

    }
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id) {
        Book book = bookService.getById(id);
        Integer code = book != null ? Code.GET_OK : Code.GET_ERR;
        String msg = book != null ? "" : "数据查询失败,请重试!";
        return new Result(code,book,msg);
    }
   @GetMapping
    public Result getAll() {
       List<Book> bookList = bookService.getAll();
       Integer code = bookList != null ? Code.GET_OK : Code.GET_ERR;
       String msg = bookList != null ? "" : "数据查询失败,请重试!";
       return new Result(code,bookList,msg);
    }
}