微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Swagger UI 中自定义 RequestBody 的示例值

如何解决如何在 Swagger UI 中自定义 RequestBody 的示例值

我有 LoginUser.java 作为

@Getter
@Setter
public class LoginUser {
    
    private String fullName;
    private String userEmail;
    private String userValidCode;
    private String institutionCode;
    private String password;

}

和控制器为:

@ApiImplicitParam(name = "logginUser",dataTypeClass = LoginUser.class,examples = @io.swagger.annotations.Example(value = {
        @ExampleProperty(value = "{'userEmail': 'test','password':'test'}") }))
@PostMapping(value = "/validateCredentials")
private ResponseEntity<LoginUser> validateUserCredentials(@RequestBody LoginUser logginUser) {}

对于 validateUserCredentials 方法,我只需要 LoginUser 的两个成员变量。 但是在 Swagger-UI 示例值中,整个 LoginUser 架构显示为:

{
  "fullName": "string","institutionCode": "string","password": "string","userEmail": "string","userValidCode": "string"
}

由于 @ExampleProperty 的尝试方法不起作用,如何在 Swagger -UI 中自定义此示例值?

解决方法

你有两个选择:
第一个方法是创建一个 DTO

@Getter
@Setter
public class LoginUserDto {
    private String userEmail;
    private String password;
}

并为您服务

private ResponseEntity<?> validateUserCredentials(@RequestBody LoginUserDto logginUser) {}

第二种方法是使用

@ApiModelProperty(hidden = true) 

其他用途

 @JsonIgnore with @ApiModelProperty(hidden = true)

所以你的实体会像:

    @Getter
    @Setter
    public class LoginUser {
        @ApiModelProperty(hidden = true)
        private String fullName;
        private String userEmail;
        @ApiModelProperty(hidden = true)
        private String userValidCode;
        @ApiModelProperty(hidden = true)
        private String institutionCode;
        private String password;
    }

希望有用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。