• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SpringBoot 统一请求返回的实现

springboot 搞代码 4年前 (2022-01-05) 44次浏览 已收录 0个评论

这篇文章主要介绍了SpringBoot 统一请求返回的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

目前我们的返回是直接把实体类扔给请求方,这样很不友好,一方面没有统一的格式,二来请求方不知道请求成功与否,没有一个可以判断的东西,也没有说明性的返回。

本篇就来为所有接口提供一个统一的友好返回。

确定返回结构

首先,我们先确定好我们接口返回的格式是什么样的,然后再一步一步实现下面的。

 { "code": 2<i style="color:transparent">来源gaodai$ma#com搞$$代**码)网</i>00, "msg": "ok", "data": "" } 
  • code 字段表示状态码,调用方根据该码来作为后续逻辑的依据,比如 code 值为 200 表示操作成功,没有逻辑错误,此时可以提示用户操作成功等;code 值不为 200 表示操作失败,比如为 1001 ,表示用户名已存在,此时前端做一些相应操作。
  • msg 字段用来充当额外说明,比如上面说的状态为 1001,这里的 msg 就可以是 username exists 这样的说明性文字,帮助调用方更好的理解。
  • data 字段一般是在 code 值为 200 的时候,返回具体的业务数据,可以是数组,也可以是对象。

创建返回码

根据上面定的返回结构,我们可以把 code 和 msg 字段用枚举类型整合,在项目中创建 common 目录,新建 ApiCode.java 如下代码所示:

 package com.foxescap.wxbox.common; /** * 全局接口状态码 * @author xfly */ public enum ApiCode { /** * 通用成功 */ API_OK(200, "ok"), /** * 用户名已存在 */ API_USERNAME_EXIST(1001, "username exists"); private final int code; private final String msg; ApiCode(int code, String msg) { this.code = code; this.msg = msg; } public int code() { return this.code; } public String getMsg() { return this.msg; } } 

之后每有一个不同的错误代码都需要在这里加上,然后调用这里的枚举变量。可能会有点繁琐,但当项目逐渐大起来以后,这样做就能很好的管理状态码。

创建返回类

在项目中创建 common 目录,新建 HttpResponse.java 文件:

 package com.foxescap.wxbox.common; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import lombok.AllArgsConstructor; import lombok.Data; import java.io.Serializable; /** * @author xfly * @param  */ @Data @AllArgsConstructor @JsonPropertyOrder({"code", "msg", "data"}) public class ApiResponse implements Serializable { private static final long serialVersionUID = 1L; /** * 自定义返回码 */ private int code; /** * 自定义返回说明 */ private String msg; /** * 返回数据 */ private T data; /** * 成功返回,无数据 * * @return 自定义的 ApiResponse 对象 */ public static ApiResponse success() { return new ApiResponse(ApiCode.API_OK.code(), ApiCode.API_OK.getMsg(), ""); } /** * 成功返回,有数据 * * @param object 返回数据 * @param   返回数据类型 * @return 自定义的 ApiResponse 对象 */ public static  ApiResponse success(T object) { return new ApiResponse(ApiCode.API_OK.code(), ApiCode.API_OK.getMsg(), object); } /** * 失败返回 * * @param apiCode 错误码 * @return 自定义的 ApiResponse 对象 */ public static ApiResponse fail(ApiCode apiCode) { return new ApiResponse(apiCode.code(), apiCode.getMsg(), ""); } } 

使用返回类

我们修改一下 Controller 里面的接口返回,现在不是直接返回实体类了,而是封装成我们的返回类,再返回给调用方:

 @GetMapping("/user/{username}") public ApiResponse findUserByUsername(@PathVariable(name = "username") String username) { return ApiResponse.success(userService.findByUsername(username)); }

以上就是SpringBoot 统一请求返回的实现的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SpringBoot 统一请求返回的实现

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址