SpringBoot统一API响应结果封装的示例详解
作者:青灯文案
在Spring Boot项目中,统一API响应结果封装是一种常用的技术实践,旨在提高开发效率、降低代码重复率,并提供一致的API响应格式,从而简化前后端交互和错误处理,感兴趣的小伙伴可以了解下
封装内容
响应结果封装是将后端服务返回的响应数据按照统一的格式进行封装,这个格式通常包括状态码、状态信息(或称为消息)、返回数据等关键信息。
- 状态码(Code):表示请求的处理结果,如成功、失败、特定错误等。状态码通常是一组预定义的整数或枚举值。
- 状态信息/消息(Message):与状态码相对应的文本描述,用于提供关于请求处理结果的更多信息。
- 返回数据(Data):实际业务处理的结果数据,其类型可能因API而异。
此外,有些封装还会包含时间戳、请求ID等附加信息,以便于日志追踪和问题排查。
封装示例
1、Result
package com.wen.data; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; /** * 统一 API 响应结果封装 */ @Data @Builder @AllArgsConstructor @NoArgsConstructor public class Result<T> { private int code; private String message; private T data; public Result<T> setCode(ResultCode resultCode) { this.code = resultCode.code; this.message = resultCode.message; return this; } public Result<T> setMessage(String message) { this.message = message; return this; } public Result<T> setData(T data) { this.data = data; return this; } }
2、ResultCode
package com.wen.data; /** * 响应码枚举 */ public enum ResultCode { // 这里可以根据多个场景设置不同的响应码,供前端判断问题并进行解释 SUCCESS(1,"SUCCESS"), FAIL(400,"FAIL"), NOT_FOUND(401,"interface not found"), ERROR(500,"System Exception!"); public int code; public String message; ResultCode(int code, String message){ this.code = code; this.message = message; } }
3、ResultGenerator
package com.wen.data; /** * 响应结果生成 */ public class ResultGenerator { public static Result<?> genSuccessResult(){ return new Result<>().setCode(ResultCode.SUCCESS); } public static Result<?> genSuccessResult(Object data){ return new Result<>().setCode(ResultCode.SUCCESS).setData(data); } public static Result<?> genFailResult(String message){ return new Result<>().setCode(ResultCode.FAIL).setMessage(message); } public static Result<?> genSpecialResult(ResultCode resultCode, String message){ return new Result<>().setCode(resultCode).setMessage(message); } }
4、TestController
package com.wen.controller; import com.wen.data.Result; import com.wen.data.ResultGenerator; import com.wen.dto.TbUser; import com.wen.service.TestService; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/test") public class TestController { @Autowired private TestService testService; @GetMapping("/select") public Result<?> selectUserByPage( @Param("pageSize") Integer pageSize, @Param("pageNumber") Integer pageNumber){ // 生成结果 return ResultGenerator.genSuccessResult(testService.selectUserByPage(pageSize, pageNumber)); } }
5、生成结果
{
"code": 1,
"message": "SUCCESS",
"data": "2024-07-19"
}
以上就是SpringBoot统一API响应结果封装的示例详解的详细内容,更多关于SpringBoot统一API响应结果的资料请关注脚本之家其它相关文章!