我想在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),但现在它们同时出现在参数和请求正文中。
我只找到了这个问题并使用
@io.swagger.v3.oas.annotations.parameters.RequestBody
作为提到的答案,但参数仍然在文档中生成。
如果我删除
@io.swagger.v3.oas.annotations.parameters.RequestBody
,文档中只会生成参数。
我想知道与 Swagger 相关的配置或处理器之类的东西是否会影响结果,因此我在项目中全局搜索了一些关键字,但没有找到任何有用的东西。
我对这个项目不太熟悉,因为它只是一个开源项目。
我希望有一些指示来检查这个问题。
一切看起来都很好。我建议您尝试另一个版本的 SpringDoc OpenAPI 依赖项,如果没有帮助,请尝试检查 Jackson ObjectMapper 的设置或 Jackson2ObjectMapperBuilderCustomizer,也许您有一些自定义序列化设置可以对生成的文档生效