Springboot联结万物学习笔记--Springboot微服务基础搭建篇(五)--SpringBoot统一接口返回的标准格式
博客说明:撰写博客目的是在记录自己所学知识、在工作中使用技术遇到的技术问题、一些技术感悟,因此避免不了涉及到和其他文章有相似之处。本文从作者自己的实践中指出相关踩坑问题,着重指出学习过程中遇到的相关问题。如果存在相关侵权问题请联系博主删除,同时有技术上的见解可以在评论去里发出,会不定期回复,谢谢。
gitee地址:https://gitee.com/woniurunfast/springbootwitheverything
01背景
在企业SpringBoot的日常开发中,一般都是需要统一返回接口类型以及异常类型,方便各服务之间的识别
02目标
1、定义自动返回类Result.java工具公共类已经经常会出现的返回提示
03封装统一返回的Result类
package com.hkx.demo.common;
import lombok.Data;
@Data
public class Result<T> {
// 返回的编码
private Integer code;
// 返回的数据,数据类型N中,
private T data;
// 返回的信息
private String message;
private Result() {
}
public static <T> Result success(T data, String message) {
Result r = new Result();
r.setCode(ResponseEnum.SUCCESS.getCode());
r.setData(data);
r.setMessage(message == null ? ResponseEnum.SUCCESS.getMessage() : message);
return r;
}
public static <T> Result success(T data) {
return success(data, null);
}
public static Result fail(Integer code, String message) {
Result r = new Result();
r.setCode(code);
r.setData(null);
r.setMessage(message);
return r;
}
public static Result fail(ResponseEnum responseEnum) {
Result r = new Result();
r.setCode(responseEnum.getCode());
r.setData(null);
r.setMessage(responseEnum.getMessage());
return r;
}
}
04封装统一枚举引用提示语
package com.hkx.demo.common;
/**
* @description: 统一返回的常量类
* 对内修改开放,对外修改关闭---枚举
*/
public enum ResponseEnum {
SUCCESS(200,"成功!"),
WONIU_REG_USER_PASSWORD_CODE(401,"用户名和密码错误"),
WONIU_REG_USER_PASSWORD_CONFIRM(402,"密码和确认密码不一致");
private Integer code;
private String message;
ResponseEnum(Integer code, String mesage){
this.code = code;
this.message =mesage;
}
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
}
05测试返回结果
创建控制层:
package com.hkx.demo.controller;
import com.hkx.demo.common.Result;
import com.hkx.demo.entity.WoNiu;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/select")
@Slf4j
public class ResultController {
@GetMapping("/getWoniu")
public Result getUser2(Integer id) {
WoNiu user = new WoNiu();
user.setId(1);
user.setHobby("swim");
user.setDesc("just for fun");
user.setType("happy");
return Result.success(user);
}
}
调用:
返回: