Swagger2 参数为实体类的一部分如何实现已解决

有这样的需求一个实体类中前端只需要传递部分参数如何实现,参考了一些资料后突然灵光一现,话不多说上代码

@ApiModel:用于响应类上,表示一个返回响应数据的信息

(这种一般用在post创建的时候,使用@RequestBody这样的场景,

请求参数无法使用@ApiImplicitParam注解进行描述的时候)

@ApiModelProperty:用在属性上,描述响应类的属性

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="User对象", description="User实体")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "id", hidden = true)
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty(value = "账号", name = "username", example = "admin")
    @NotBlank(message = "用户名不允许为空, 请重新输入")
    private String username;

    @ApiModelProperty(value = "姓名")
    private String realname;

    @ApiModelProperty(value = "密码", name = "password", example = "123123")
    @NotBlank(message = "密码不允许为空, 请重新输入")
    private String password;

    @ApiModelProperty(value = "注册时间", hidden = true)
    private Date regtime;
}

主要借助@ApiModelProperty(value = "id", hidden = true)
hidden=true时可以将字段隐藏
hidden也可以替换为readOnly=true改为只读这样POST请求就不会显示

  /**
     * 注册用户
     * @param user
     * @return
     */
    @ApiOperation(value = "注册方法", httpMethod = "POST")
    @PostMapping(value = "/register")
    public Result register(@Valid @RequestBody
                               @ApiParam(name = "user", value = "用户注册", required = true)  User user) {
}

@ApiParam(name = "user", value = "用户注册", required = true)
name = "user"与参数user要一致

Swagger页面显示结果如下

实体类中的id、regtime没有在swagger中显示,使用不当之处还请指出

posted @ 2021-07-30 17:37  Du先森  阅读(2391)  评论(0)    收藏  举报