【JAVA】项目实战功能——项目自定义通用响应对象


前言

在Spring Boot项目中,通用返回对象是一种用于封装接口统一返回结果的模式,它能够提高接口的可读性、可维护性,并且规范了接口的返回格式。通常,开发人员使用一个统一的数据结构来包裹接口返回的数据,这就是通用返回对象。
一般每个团队都会有自己的接口规范,比如调用api接口返回的响应报文结构需要指定结构,就需要我们使用通用的返回对象了


提示:以下是本篇文章正文内容,下面案例可供参考

一、特点

  • 统一结构: 通用返回对象定义了统一的数据结构,包括状态码、消息和数据等字段,使得接口的返回格式一致。
  • 异常处理: 通用返回对象通常包含了异常处理机制,能够更好地处理业务异常,使得异常信息更加友好。
  • 规范约定: 使用通用返回对象可以规范接口的返回,减少了在不同接口中定义不同的返回结构的情况。
  • 可扩展性: 通用返回对象是可扩展的,可以根据具体业务需要在其中加入更多的字段,例如时间戳、请求ID等。

二、代码

直接贴代码例子
1、首先在自己的项目下创建一个目录名为 response的包
在这里插入图片描述

2、创建三个class类 ResponseResult、ResponseResultCount、ResponseResultData

①ResponseResult类

@JsonIgnoreProperties(
    ignoreUnknown = true
)
public class ResponseResult {
    //"状态码(0成功,非0失败)"
    private int code;
    //"状态码说明"
    private String msg = "ok";

    public ResponseResult() {
    }

    public int getCode() {
        return this.code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return this.msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public boolean isSuccess() {
        return 0 == this.code;
    }

    public static ResponseResult success() {
        ResponseResult responseResult = new ResponseResult();
        responseResult.setCode(0);
        return responseResult;
    }

    public static ResponseResult fail(String msg) {
        ResponseResult responseResult = new ResponseResult();
        responseResult.setCode(-1);
        responseResult.setMsg(msg);
        return responseResult;
    }
}

②ResponseResultCount

@JsonIgnoreProperties(
    ignoreUnknown = true
)
public class ResponseResultCount<T> {
    //"状态码(0成功,非0失败)"
    private int code;
    //"状态码说明"
    private String msg = "ok";
   //"响应数据"
    private T data;
    //"总行数"
    private long count;

    public ResponseResultCount() {
    }

    public int getCode() {
        return this.code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return this.msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public T getData() {
        return this.data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public long getCount() {
        return this.count;
    }

    public void setCount(long count) {
        this.count = count;
    }

    public boolean isSuccess() {
        return 0 == this.code;
    }

    public static <T> ResponseResultCount<T> success(T data, long count) {
        ResponseResultCount<T> responseResultCount = new ResponseResultCount();
        responseResultCount.setCode(0);
        responseResultCount.setData(data);
        responseResultCount.setCount(count);
        return responseResultCount;
    }
}

③ResponseResultData

@JsonIgnoreProperties(
    ignoreUnknown = true
)
public class ResponseResultData<T> {
    //"状态码(0成功,非0失败)"
    private int code;
    //"状态码说明"
    private String msg = "ok";
    //"响应数据"
    private T data;

    public ResponseResultData() {
    }

    public int getCode() {
        return this.code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return this.msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public T getData() {
        return this.data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public boolean isSuccess() {
        return 0 == this.code;
    }

    public static <T> ResponseResultData<T> success(T data) {
        ResponseResultData<T> responseResultData = new ResponseResultData();
        responseResultData.setCode(0);
        responseResultData.setData(data);
        return responseResultData;
    }

    public static <T> ResponseResultData<T> fail(String msg) {
        ResponseResultData<T> responseResultData = new ResponseResultData();
        responseResultData.setCode(-1);
        responseResultData.setMsg(msg);
        return responseResultData;
    }
}

三、使用

我这里定义了三个返回对象,分别对应不同的返回情况

第一个 ResponseResult使用场景

当接口只需要返回是否调用是否成功的结果,而不需要返回业务数据时,就用该ResponseResult响应对象即可
例:

    @PostMapping("/demo")
    public Response demo(@RequestParam Map<String, Object> requestBody){
         //业务场景处理
         if(xxxxxx){
         //出现异常或者业务需要返回错误
          return ResponseUtil.error("自定义错误信息")
         
         }
         //若接口成功调用则返回成功
        return ResponseUtill.success();
    }
    //该接口成功返回报文如下:
//    {
//	"code": 0,
//	"msg": "",
//	"success": true
//	}
     //接口返回错误信息如下,我这里失败统一返回-1了。大家可以根据情况自己增加错误码
//     {
//	"code": -1,
//	"msg": "自定义错误信息",
//	"success": false
//}
    

**

第二个ResponseResultCount使用场景

因为这个对象有一个count属性,一般接口需要返回数组列表数据的时候使用该响应对象

//获取用户列表
    @GetMapping("/getUsers")
    public ResponseResultCount<List<ReqTaskVO>> getReqTaskViews() {
        List<User> users= demoService.getDataList(Map<String, String> param);
        return ResponseResultCount.success(users,users.size());
    }
   // 该接口响应报文如下
{
  "code": 0,
  "msg": "ok",
  "data": [],
  "count": 0,
  "success": true
}

第三个ResponseResultData使用场景

这个对象和第二个有所不同的是没有count属性,也就不需要返回具体的个数,除了页面需要查看数据的个数除外,大部分情况都可适用

//根据用户id查询 用户详情信息
    @GetMapping("/getUserInfo")
    public ResponseResultData<User> getUserInfo(@RequestParam String userId) {
        User user= userService.getUserInfo(userId);
        return ResponseResultData.success(user);
    }
    //该接口的成功响应报文 如下
    {
  "code": 0,
  "msg": "ok",
  "data": {},
  "success": true
}
  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 瑞吉外卖是一个基于Java开发的项目实战,适用于在线外卖订餐系统。该项目提供了用户注册、登录、浏览餐厅、查看菜单、下订单等功能。 首先,我们需要在网盘上下载瑞吉外卖的项目源代码文件。通过提供的下载链接,我们可以将项目源代码文件下载到本地。下载完成后,我们可以将文件解压缩,并使用Java开发工具(如Eclipse或IntelliJ IDEA)导入项目。 接下来,我们需要安装项目所需的Java开发环境。确保已经安装了JDK(Java Development Kit)和Maven(项目构建工具)。这样可以保证项目能够正常编译和运行。 在导入项目后,我们可以查看项目的目录结构。主要包括源代码、配置文件和静态资源文件等。在源代码文件夹中,我们可以找到各种Java类文件,包括控制器、实体类、服务类等。配置文件夹中包含项目的配置文件,用于配置数据库连接、日志记录等。静态资源文件夹中包含了项目所需的各种图片、样式表和JavaScript文件等。 在开始开发之前,我们需要先配置数据库。将提供的SQL脚本文件导入到MySQL数据库中,并在项目配置文件中修改数据库连接相关的配置信息。 接下来,我们可以根据需求对项目进行开发和定制化。例如,我们可以根据需要添加更多的功能模块,如优惠券管理、配送员管理等。我们也可以根据需求修改前端页面的样式和布局,以满足用户的需求。 开发完成后,我们可以使用Maven将项目打包成可执行的WAR文件。将WAR文件上传至服务器,并部署在Tomcat等Java Web服务器上。通过访问服务器的IP地址和端口号,我们就可以在浏览器中访问瑞吉外卖系统了。 总之,下载并实战瑞吉外卖项目需要下载源代码文件,并在Java开发工具中导入项目。然后,我们可以根据需求进行开发和定制化,并最终将项目打包部署在服务器上。最后,我们可以通过浏览器访问项目,体验瑞吉外卖系统的功能。 ### 回答2: 瑞吉外卖是一个基于Java语言开发的项目实战项目的主要目标是实现一个在线外卖订餐系统。用户可以通过网页或手机应用程序浏览餐厅菜单、下订单、查看订单状态等功能。 该项目的开发环境主要包括Java SE、Java EE、Spring框架和MySQL数据库。其中,Java SE用于实现基本的语言特性和数据处理操作,Java EE用于构建Web应用程序,Spring框架用于实现系统的MVC架构,MySQL数据库用于存储用户信息、菜品信息和订单数据等。 项目的实施步骤如下: 1. 需求分析:首先,根据用户的需求分析,确定项目的基本功能和需求。 2. 系统设计:基于需求分析的结果,进行系统设计,包括数据库设计、界面设计和系统架构设计等。 3. 环境搭建:安装配置Java开发环境,包括JDK、开发工具(如Eclipse或IntelliJ IDEA)、Web服务器(如Tomcat)和数据库管理系统(MySQL)。 4. 数据库建模:创建数据库表结构,定义各个表之间的关系。 5. 编码实现:根据系统设计的结果,进行编码实现,包括前端界面的开发和后端功能的开发。 6. 软件测试:对已实现的功能进行测试,包括单元测试、集成测试和系统测试等,保证系统的稳定性和可靠性。 7. 部署上线:将项目部署到服务器上,使用户可以通过网络访问系统。 8. 运维和优化:监控系统运行情况,对性能进行优化和改进。 最后,用户可以通过网盘下载瑞吉外卖的源代码和相关文档,以便学习和参考。项目实战瑞吉外卖的开发过程将帮助开发者熟悉Java开发技术,并理解实际项目的需求分析、系统设计和开发实施等流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Accccccccv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值