SSMP整合案例(9) 统一表现层数据返回格式

这篇具有很好参考价值的文章主要介绍了SSMP整合案例(9) 统一表现层数据返回格式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上文 SSMP整合案例(8) Restful开发表现层接口 我们就已经是把表现层的接口写完了
但是 我们会发现 现在前端人员拿到我们的数据 格式看着非常的乱
我们 数据库 添加 修改 删除 就是但数据的格式 一个 布尔值
查询 就是 查多个 一个集合
查询 全部 则就是 一个对象的格式
还有分页的一个 IPage的一个单对象的格式
五花八门

不同数据 解析方式是不一样的 前端同事看着就会非常崩溃了

那么 我们可以统一一下 例如 我们返回的数据 都可以放在 data的字段中
但是 这样 我们查询错误 或者没查到时 就会出现 null的情况

那么 我们就会给前端一个这样的东西

{
    data: null
}

这个是很有争议的 因为 这个null 也不一定是没有数据 也可能是系统异常导致的 还有一些外界因素

所以 只有一个data 显然不太够 我们前端同事显然不知道怎么去提示用户 是数据异常啊 还是怎么了
我们加个 state 如果是 200 表示成功了

{
    data: {
        state: 200,
        name: 数据
    }
}

失败则是

{
    data: {
        state: 500,
        name: null
    }
}

具体的 大家可以去了解一下 HTTP状态码
但是 后台我们运行过程中 也可能出现各种各样问题
这个 我们还需要给个输出语句
message
例如

{
    data: {
        state: 200,
        name: 数据,
        message: "操作成功"
    }
}

或者

{
    data: {
        state: 500,
        name: null,
        message: "系统异常"
    }
}

在我们项目之前的 controller 包下创建一个包 叫 utils
utils包下创建一个 ResultUtil 类
SSMP整合案例(9) 统一表现层数据返回格式,java,spring boot,mvc
ResultUtil 参考代码如下

package com.example.webdom.controller.utils;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class ResultUtil {
    private int state;
    private Object data;
    private String message;
}

相信大家还记得lombok的Data 自动声明 get和set方法
不然 这里 你还是要自己写get和set函数的
然后 我们通过AllArgsConstructor 给他加上了一个全部参数的构造方法 之前这个我们也讲过

那么 这个类 显然是为 BookController 的请求服务的 那显然 BookController 要改了
先将 getAll 查询全部函数代码更改成这样

@GetMapping
public ResultUtil getAll() {
    List<book> BookList = IBookService.list();
    int state = BookList.isEmpty()?500:200;
    String message = BookList.isEmpty()?"未获取到对应记录":"操作成功";
    ResultUtil ResultUtil = new ResultUtil(state,BookList,message);
    return ResultUtil;
}

首先 方法的返回值 我们返回一个ResultUtil对象类型的值
然后 我们定义BookList接收IBookService.list();获取的List集合
然后 用三元运算符给 state 和 message 赋值 BookList.isEmpty() 是在判断 List集合有没有拿到
然后 最后 通过构造方法 将我们处理好的三个字段注入到ResultUtil对象中并返回
我们到Postman中测试一下
SSMP整合案例(9) 统一表现层数据返回格式,java,spring boot,mvc
SSMP整合案例(9) 统一表现层数据返回格式,java,spring boot,mvc
非常完美

save 添加代码修改如下

@PostMapping
public ResultUtil save(@RequestBody book book){
    boolean verify = IBookService.save(book);
    int state = verify?200:500;
    String message = verify?"操作成功":"系统异常";
    ResultUtil ResultUtil = new ResultUtil(state,book,message);
    return ResultUtil;
}

因为 他添加的方法本来返回的就是 boolean 我们直接用它来判断有没有成功 因为他没有数据 所以 data我们直接把他加的这条数据还给他
Postman运行结果如下
SSMP整合案例(9) 统一表现层数据返回格式,java,spring boot,mvc
我们看到数据库
我们的数据也是成功加进去了
SSMP整合案例(9) 统一表现层数据返回格式,java,spring boot,mvc
修改自然就是改成这样

@PutMapping
public ResultUtil pudata(@RequestBody book book){
    boolean verify = IBookService.updateById(book);
    int state = verify?200:500;
    String message = verify?"操作成功":"系统异常";
    ResultUtil ResultUtil = new ResultUtil(state,book,message);
    return ResultUtil;
}

Postman运行结果如下
SSMP整合案例(9) 统一表现层数据返回格式,java,spring boot,mvc
我们看到数据库
SSMP整合案例(9) 统一表现层数据返回格式,java,spring boot,mvc
数据依旧修改成功
然后删除 这次我们来删一条不存在的数据
我们先把 方法改了

@DeleteMapping("{id}")
public ResultUtil delete(@PathVariable Integer id){
    boolean verify = IBookService.removeById(id);
    int state = verify?200:500;
    String message = verify?"操作成功":"系统异常";
    ResultUtil ResultUtil = new ResultUtil(state,null,message);
    return ResultUtil;
}

还是 用布尔接 然后判断操作有没有成功 不过 删除并不涉及任何数据 所以 我们直接给 null
Postman 我们给个不存在的 id 15吧
运行结果如下
SSMP整合案例(9) 统一表现层数据返回格式,java,spring boot,mvc
可以看到 我们的返回值处理 也没有什么问题

根据id查询 单个数据 我们这样写

@GetMapping("{id}")
public ResultUtil getById(@PathVariable Integer id){
    book book = IBookService.getById(id);
    int state = book != null?200:500;
    String message = book != null?"操作成功":"系统异常";
    ResultUtil ResultUtil = new ResultUtil(state,book,message);
    return ResultUtil;
}

运行结果如下
SSMP整合案例(9) 统一表现层数据返回格式,java,spring boot,mvc
然后是分页的查询方式

@GetMapping("/page")
public ResultUtil getPage(@RequestParam int page,int pageSize) {
    IPage<book> BookPage = IBookService.getPage(page, pageSize);
    int state = BookPage != null?200:500;
    String message = BookPage != null?"操作成功":"系统异常";
    ResultUtil ResultUtil = new ResultUtil(state,BookPage,message);
    return ResultUtil;
}

本身思路都是一样的
Postman 运行代码如下
SSMP整合案例(9) 统一表现层数据返回格式,java,spring boot,mvc
SSMP整合案例(9) 统一表现层数据返回格式,java,spring boot,mvc文章来源地址https://www.toymoban.com/news/detail-522209.html

到了这里,关于SSMP整合案例(9) 统一表现层数据返回格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot 统一功能处理(拦截器实现用户登录权限的统一校验、统一异常返回、统一数据格式返回)

    目录 1. 用户登录权限校验 1.1 最初用户登录权限效验 1.2 Spring AOP 用户统⼀登录验证 1.3 Spring 拦截器 (1)创建自定义拦截器 (2)将自定义拦截器添加到系统配置中,并设置拦截的规则 1.4 练习:登录拦截器 (1)实现 UserController 实体类 (2)返回的登录页面:login.html (3)实

    2024年02月12日
    浏览(48)
  • SSMP整合案例(2) Spring Boot整合Lombok简化实体类开发

    好啊 接着我们上文SSMP整合案例(1) 构建 Spring Boot Vue MySql项目环境 我们继续 接下来 我们要在java项目中 建立出数据库表对应的实体类 我们还是先看看自己上文中 创建的这个 book表 其中四个字段 主键id 数字枚举类型的type 字符串类型name 字符串类型 description 我们打开idea 找到上

    2024年02月09日
    浏览(47)
  • SSMP整合综合案例【SpringBoot的基本增删改查】

    实体类开发————使用Lombok快速制作实体类 Dao开发————整合MyBatisPlus,制作数据层测试 Service开发————基于MyBatisPlus进行增量开发,制作业务层测试类 Controller开发————基于Restful开发,使用PostMan测试接口功能 Controller开发————前后端开发协议制作 页面开发

    2024年02月09日
    浏览(38)
  • Spring Boot 优雅实现统一数据返回格式+统一异常处理+统一日志处理

            在我们的项目开发中,我们都会对数据返回格式进行统一的处理,这样可以方便前端人员取数据,当然除了正常流程的数据返回格式需要统一以外,我们也需要对异常的情况进行统一的处理,以及项目必备的日志。         在项目开发中返回的是json格式的数据

    2024年01月19日
    浏览(42)
  • SSMP整合案例(14) 将界面查询改为分页查询

    前面几篇文章过后 我们的项目基本环境就算搭好了 但是 我们下面的分页显然就是个摆设 这里 我们就先将查询的方法改成分页的 我们 java项目之前做了这个分页的函数 那么 我们vue项目 直接在 src下的 api 下的bookApi.js中加上对应的函数 因为 我们的分页方法上面单独挂了 @Ge

    2024年02月13日
    浏览(26)
  • Spring Boot 统一数据返回格式 分析 和 处理

    目录 实现统一数据格式  测试   原因分析  解决方案 🎥 个人主页:Dikz12 📕格言:吾愚多不敏,而愿加学 欢迎大家👍点赞✍评论⭐收藏 统⼀的数据返回格式使⽤ @ControllerAdvice 和 ResponseBodyAdvice 的⽅式实现; @ControllerAdvice : 表⽰控制器通知类. 比如:添加类 ResponseAdvic

    2024年04月08日
    浏览(47)
  • 【Spring Boot】拦截器与统一功能处理:统一登录验证、统一异常处理与统一数据返回格式

     Spring AOP是一个基于面向切面编程的框架,用于将横切性关注点(如日志记录、事务管理)与业务逻辑分离,通过代理对象将这些关注点织入到目标对象的方法执行前后、抛出异常或返回结果时等特定位置执行,从而提高程序的可复用性、可维护性和灵活性。但使用原生Sp

    2024年02月16日
    浏览(45)
  • .Net Core webapi RestFul 统一接口数据返回格式

    在RestFul风格盛行的年代,大部分接口都需要一套统一的数据返回格式,那么我们怎么才能保证使用统一的json数据格式返回呢,下面给大家简单介绍一下: 假如我们需要接口统一返回一下数据格式: json对象中data是返回的实际结果对象,可以是一个对象、一个list、一个字符串

    2024年01月16日
    浏览(36)
  • SpringBoot统一异常处理和统一返回格式

    上篇博客我们讲解了使用AOP来进行统一的用户登录判断,其实像这种功能统一且使用较多的地方,都可以用AOP来处理,除了统⼀的⽤户登录判断之外,AOP 还可以实现: 统⼀⽇志记录 统⼀⽅法执⾏时间统计 (在性能优化阶段,监控流量,接口的响应时间等甚至每个方法的响应

    2024年02月15日
    浏览(35)
  • Springboot 中设置统一的返回格式

    在我们应用中我们通常与前端交互使用json 格式,设置统一的返回json 格式是非常必要的,可以减少开发人员的工作量。 第一个使用统一的消息转换器,这里使用jackson 的相关功能,引入jar 创建一个全局配置类(GlobalConfig)并使用 @Configuration 注解标记该类为配置类。然后,在

    2024年01月25日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包