代码拉取完成,页面将自动刷新
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.5.0</version>
</dependency>`
springboot3.2.4 jdk17
/**
* @❤️❤️笑对人生,风雨皆成诗。
* @日期: 2024/4/16 11:00
* @描述: 测试返回值
*/
@Operation(
summary = "测试3",
description = "根据请求头用于测试",
parameters = {
@Parameter(name = "name", description = "名称"),
@Parameter(name = "age", description = "年纪"),
},
responses = {
@ApiResponse(
responseCode = "0",
description = "成功",
content = {
@Content(
mediaType = "application/json",
schema = @Schema(implementation = R.class, exampleClasses=TestVo.class)
)
}
)
}
)
@PostMapping("/testReturn3")
public TestVo testReturn3(@Length(min = 2, max = 4, message = "名称2-4长度") @RequestParam("name") String name, @Min(value = 10, message = "年龄最少为10") @RequestParam("age") String age) {
TestVo testVo = new TestVo();
return testVo;
}
全局使用了统一返回结果值,
package com.panda.cn.config.ReturnValue;
import com.panda.cn.utils.result.R;
import org.springframework.core.MethodParameter;
import org.springframework.core.env.Environment;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.context.request.async.StandardServletAsyncWebRequest;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.method.support.ModelAndViewContainer;
/**
* 处理程序返回值
*
* @author Yanmh
* @date 2022/09/13
*/
public class ReturnValueHandler implements HandlerMethodReturnValueHandler {
private Environment env;
/**
* 处理程序方法返回值处理程序
*/
private final HandlerMethodReturnValueHandler handlerMethodReturnValueHandler;
/**
* 处理程序返回值
*
* @param handlerMethodReturnValueHandler 处理程序方法返回值处理程序
*/
public ReturnValueHandler(HandlerMethodReturnValueHandler handlerMethodReturnValueHandler, Environment env){
this.handlerMethodReturnValueHandler = handlerMethodReturnValueHandler;
this.env = env;
}
/**
* 支持返回类型
*
* @param methodParameter 方法参数
* @return boolean
*/
@Override
public boolean supportsReturnType(MethodParameter methodParameter) {
return this.handlerMethodReturnValueHandler.supportsReturnType(methodParameter);
}
/**
* 处理返回值
*
* @param returnValue 返回值
* @param methodParameter 方法参数
* @param modelAndViewContainer 模型和视图容器
* @param nativeWebRequest 本地web请求
* @throws Exception 异常
*/
@Override
public void handleReturnValue(Object returnValue, MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest) throws Exception {
// 判断外层是不是由封装的进行返回
if(returnValue instanceof R) {
this.handlerMethodReturnValueHandler.handleReturnValue(returnValue, methodParameter, modelAndViewContainer, nativeWebRequest);
return;
}
// 获取请求地址
String servletPath = ((StandardServletAsyncWebRequest) nativeWebRequest).getRequest().getServletPath();
String docPath = env.getProperty("springdoc.api-docs.path");
if (servletPath.startsWith(docPath)) {
this.handlerMethodReturnValueHandler.handleReturnValue(returnValue, methodParameter, modelAndViewContainer, nativeWebRequest);
return;
}
this.handlerMethodReturnValueHandler.handleReturnValue(R.success().data(returnValue), methodParameter, modelAndViewContainer, nativeWebRequest);
}
}
统一返回类为R
package com.panda.cn.utils.result;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.panda.cn.model.vo.TestVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @author: Mr.Yan
* @create: 2020/10/21
* @description: 返回结果集统一封装
*/
//@Schema(description = "响应")
public class R<T extends Object> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 返回操作码(默认为正常)
*/
@Schema(description = "状态码(0:成功, -1:失败)")
private Integer code = RCodeEnum.SUCCESS.code();
/**
* 返回正确消息信息
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@Schema(description = "成功消息")
private String msg = "";
/**
* 返回错误的消息信息
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@Schema(description = "失败消息")
private String error = "";
/**
* 返回数据信息
*/
@Schema(description = "响应数据")
private T data;
public static R success() {
return new R().code(RCodeEnum.SUCCESS).msg(RCodeEnum.SUCCESS.msg());
}
public static R fail() {
return new R().code(RCodeEnum.FAIL).error(RCodeEnum.FAIL.msg());
}
// 构造方法
public static R build() {
return new R();
}
public static <T> R<T> build(T data) {
return new R().data(data);
}
// 赋值方法
public R<T> data(T data) {
this.data = data;
return this;
}
public R code(RCodeEnum enmu) {
this.code = enmu.code();
return this;
}
public R msg(String msg) {
this.msg = msg;
return this;
}
public R error(String error) {
this.error = error;
return this;
}
public Integer getCode() {
return code;
}
public T getData() {
return data;
}
public String getMsg() {
return msg;
}
public String getError() {
return error;
}
}
TestVo类
@Schema(description = "测试返回")
public class TestVo {
@Schema(description = "名称", defaultValue = "张三")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
object 能为未TestVo类