Une fois l'intégration SSM et le développement des modules fonctionnels terminés, nous analyserons ensuite les problèmes que nous devons résoudre en fonction des cas ci-dessus. Tout d'abord, la première question est la suivante :
Lors de l'ajout, de la suppression ou de la modification de données au niveau de la couche Contrôleur, les données de type booléen sont renvoyées au front-end
Lors d'une requête au niveau de la couche Contrôleur, un seul objet est renvoyé. renvoyé au front-end.
Lors d'une requête au niveau de la couche Contrôleur, tous les objets sont renvoyés au front-end. l'activité se développe, nous devrons renvoyer de plus en plus de types de données. Pour les développeurs front-end, l'analyse des données est assez compliquée, donc pour le front-end, si l'arrière-plan peut renvoyer un résultat de données unifié, le front-end peut analyser d'une seule manière lors de l'analyse. Le développement deviendra plus facile.
Nous nous demandons donc si nous pouvons unifier les données de résultat renvoyées. Comment le faire spécifiquement ? L'idée générale est la suivante :
Afin d'encapsuler les données de résultat renvoyées : créez une classe de modèle de résultat et encapsulez les données dans les données. attributpublic class Result{ private Object data; private Integer code; private String msg; }
Remarque : le nom de la classe de résultat et les champs de la classe ne sont pas fixes . Vous pouvez l'augmenter ou le diminuer selon vos besoins pour proposer plusieurs méthodes de construction pour un fonctionnement pratique.
Implémentation du protocole de transmission de données frontale et de la couche de présentationEncapsulation des résultatsPour l'encapsulation des résultats, nous devons le traiter dans la couche de présentation, nous mettons donc la classe de résultats sous le package du contrôleur. Bien sûr, vous pouvez également la mettre. dans le package de domaine. Tout cela est possible. Comment implémenter l'encapsulation des résultats ? Les étapes spécifiques sont : Étape 1 : Créer la classe Resultpublic 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; } 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; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } @Override public String toString() { return "Result{" + "data=" + data + ", code=" + code + ", msg='" + msg + '\'' + '}'; } }
//状态码 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; }
//统一每一个控制器方法返回值 @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); } }
Étape 4 : Démarrer le test de service
Nos résultats de retour peut déjà être Un format unifié est renvoyé au front-end. Sur la base du résultat renvoyé, le frontal obtient d'abord la valeur dans
sous forme d'invite.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!