1、Result
一般來說,增刪改返回boolean,查詢返回物件或集合,還有其他型別的返回資料,前段解析資料比較麻煩,需要返回一個統一的資料結果
統一資料返回結果類:
- data:封裝資料(各種型別的,例如boolean、null、json等)
- code:封裝操作型別與是否成功,可以使用列舉類
- msg:封裝特殊資訊(操作失敗返回的錯誤資訊等)
public class Result{
private Object data;
private Integer code;
private String msg;
}
2、案例
public class Result {
//描述統一格式中的資料
private Object data;
//描述統一格式中的編碼,用於區分操作,可以簡化配置0或1表示成功失敗
private Integer code;
//描述統一格式中的訊息,可選屬性
private String msg;
public Result() {
}
//構造方法是方便物件的建立
public Result(Integer code,Object data) {
this.data = data;
this.code = code;
}
//構造方法是方便物件的建立
public Result(Integer code, Object data, String msg) {
this.data = data;
this.code = code;
this.msg = msg;
}
//setter...getter...省略
}
定義返回碼Code類:code類中的常量設計也不是固定的,可以根據需要自行增減,例如將查詢再進行細分為GET_OK,GET_ALL_OK,GET_PAGE_OK等。
//狀態碼
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;
}
前端根據返回的結果,先從中獲取
code
,根據code判斷,如果成功則取data
屬性的值,如果失敗,則取msg
中的值做提示。
@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);
}
}