如何正确使用Swagger 3的RequestBody注解?

问题描述 投票:0回答:1

我想在Swagger API文档中有RequestBody的描述,所以我的登录方法是这样的:

@PostMapping("/login")
@PermitAll
@Operation(summary = "login by username and password")
@OperateLog(enable = false)
public CommonResult<AuthLoginRespVO> login(
    @io.swagger.v3.oas.annotations.parameters.RequestBody(description = "login request body", required = true,content = @Content(schema=@Schema(implementation = AuthLoginReqVO.class)))
    @RequestBody @Valid AuthLoginReqVO reqVO){
    return success(authService.login(reqVO));
}

请求实体如下:

@Schema(description = "")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AuthLoginReqVO {

    @Schema(description = "username", required = true, example = "admin")
    @NotEmpty(message = "...")
    @Length(min = 4, max = 16, message = "...")
    @Pattern(regexp = "^[A-Za-z0-9]+$", message = "...")
    private String username;

    @Schema(description = "password", required = true, example = "123456")
    @NotEmpty(message = "...")
    @Length(min = 4, max = 16, message = "...")
    private String password;

用户名和密码本应在 Swagger 中描述为请求正文(JSON),但现在它们同时出现在参数和请求正文中。

enter image description here

我只找到了这个问题并使用

@io.swagger.v3.oas.annotations.parameters.RequestBody
作为提到的答案,但参数仍然在文档中生成。

如果我删除

@io.swagger.v3.oas.annotations.parameters.RequestBody
,文档中只会生成参数。

我想知道与 Swagger 相关的配置或处理器之类的东西是否会影响结果,因此我在项目中全局搜索了一些关键字,但没有找到任何有用的东西。

我对这个项目不太熟悉,因为它只是一个开源项目。

我希望有一些指示来检查这个问题。

java swagger
1个回答
0
投票

一切看起来都很好。我建议您尝试另一个版本的 SpringDoc OpenAPI 依赖项,如果没有帮助,请尝试检查 Jackson ObjectMapper 的设置或 Jackson2ObjectMapperBuilderCustomizer,也许您有一些自定义序列化设置可以对生成的文档生效

© www.soinside.com 2019 - 2024. All rights reserved.