Swagger Spring Doc:Get请求RequestBody为自定义参数时,没有参数设置框,且后端无法接收

问题描述

针对界面的多条件复杂查询,由于查询条件不定,不好一个条件定义一个参数。创建一个查询类来接收参数。

在查询为Get模式时,SpringDoc 的接口调试参数输入界面异常,且后端无法接收查询参数。

环境

  <!-- mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

  <!-- knife4j openapi3 接口文档 -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
            <version>4.3.0</version>
        </dependency>

查询类 UserQuery

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;


@Data
@ToString(callSuper = true)
@Schema(description = "用户查询条件实体")
public class UserQuery {

    @Schema(description = "用户名关键字",example = "o")
    private String name;

    @Schema(description = "用户状态:1-启用,0-停用", example = "1")
    private String status;

    @Schema(description = "余额最小值", example = "2000")
    private Integer minBalance;

    @Schema(description = "余额最大值", example = "20000")
    private Integer maxBalance;
}

Controller 中的查询方法

    @Operation(
            summary = "06 根据复杂条件查询用户接口"
    )
    @GetMapping("/list")
    public List<UserVO> queryUsers( @RequestBody UserQuery query){
        //1.查询用户
        List<User> users = userService.queryUsers(
                query.getName(),query.getStatus(),query.getMaxBalance(),query.getMinBalance()
        );

        //2.把PO 拷贝 VO
        return BeanUtil.copyToList(users, UserVO.class);
    }

UserVO类

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;

import java.time.LocalDateTime;

@Data
@ToString(callSuper = true)
@Schema(description = "用户 VO 实体")
public class UserVO {

    @Schema(description = "用户id")
    private Long id;

    @Schema(description = "用户名")
    private String userName;

    @Schema(description = "详细信息")
    private String info;

    @Schema(description = "用户状态(1启用 0停用)")
    private String status;

    @Schema(description = "账户余额")
    private Integer balance;

    @Schema(description = "注册时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime regDate;

    @Schema(description = "创建时间")//, type = "dateTime",pattern = "yyyy-MM-dd HH:mm:ss"
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    @Schema(description = "最后更新时间")//, type = "dateTime",pattern = "yyyy-MM-dd HH:mm:ss"
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updateTime;
}

PO: User 类

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.sunmon.turtle.utils.MyLocalDateTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;


@Data
@Component
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
//    @TableId//不指定 IdType 时,默认使用雪花算法生成数字(企业级开发时使用)
    @TableId(type= IdType.AUTO)//自增
    private Long id;
    private String userName;
    private String password;
    private String phone;
    private String gender;
    private String info;
    private String loginId;
    private Integer status;//用户状态(1启用 0停用)
    @TableField(exist = false)
    private String address;
    private Integer balance;

    @TableField( typeHandler = MyLocalDateTypeHandler.class)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime regDate;

    @TableField( typeHandler = MyLocalDateTypeHandler.class, fill = FieldFill.INSERT)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @TableField( typeHandler = MyLocalDateTypeHandler.class, fill = FieldFill.UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;


}

结果(有问题的)

尝试发送请求,点发送

后端问题提示

问题解决

查百度

调整请求方式

重启服务器,再看,请求参数已变

尝试发请求,点“发送”

已能正常获取结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值