
文章插图
案例总结阶段以上部分就是根据我们之前所学内容所整合出来的整体框架,我们已经基本做成了一个简单的服务器
SSM表现层数据封装我们在上一小节已经完成了一个基本项目的开发
但是我们会注意到我们服务层的返回数据类型不尽相同:
package com.itheima.controller;import com.itheima.domain.Book;import com.itheima.service.BookService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.List;@RestController@RequestMapping("/books")public class BookController { @Autowired private BookService bookService; // 我们会注意到我们返回的数据有时为boolean,有时为Book,有时为List<Book> @PostMapping public boolean save(@RequestBody Book book) { return bookService.save(book); } @PutMapping public boolean update(@RequestBody Book book) { return bookService.update(book); } @DeleteMapping("/{id}") public boolean delete(@PathVariable Integer id) { return bookService.delete(id); } @GetMapping("/{id}") public Book getById(@PathVariable Integer id) { return bookService.getById(id); } @GetMapping public List<Book> getAll() { return bookService.getAll(); }}我们需要注意的是:
- 项目并非我们一个人开发,我们在实际开发中大部分前后端是分离的,也就是说我们返回的数据是返回给前端进行处理的
- 但前端并不熟悉后端的代码,所以我们如果毫无忌惮的传递没有任何说明的数据,前端是无法把它做成页面展现出来的
- 所以前后端通常需要一种规范来设计返回类型,让前端能够明白后端所传递的数据,我们通常把他称为表现层数据封装
我们通常采用一个实现类来规定数据封装格式:
public class Result{ // 这里我们假设给出三种数据来进行前后端沟通 /* data:数据内容 code:状态码 msg:相关信息 */ private Object data; private Integer code; private String msg;}这里的data数据就是取自表现层数据,code是双方规定的状态码,msg是用于提供相关附属信息
Result类中的字段不是固定的,可以根据需求自行删减表现层数据封装操作接下里我们以第一阶段案例给出相关修改案例:
注意需要提供若干个构造方法,方便操作
