OpenAPI (Swagger-UI) - 仅某些 API 的必填字段

OpenAPI (Swagger-UI) - Required field for some APIs only

我目前在我的 Spring 启动应用程序中使用 OpenAPI 3 (Swagger-UI),我想知道如何为某些 API 指定如果我对所有字段使用相同的模型 Java class,则只有某个字段是 required/optional。

这是我的示例:

@Getter
@Setter
@Accessors(chain = true)
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserRequest {
  @NotEmpty(message = "{constraints.NotEmpty.message}")
  private String username;
  @NotEmpty(message = "{constraints.NotEmpty.message}")
  private String password;
  @NotEmpty(message = "{constraints.NotEmpty.message}")
  private String cookie;
  @NotEmpty(message = "{constraints.NotEmpty.message}")
  private String csrfToken;
}

此 class 用作多个 API 的输入请求,但其中只有一些要求这些字段全部为必填项(即“密码”字段仅在登录 API,而不是注销)。

有没有办法使用 OpenAPI 的注释来突出显示需要它们的 API 的必填字段?

提前感谢您的帮助。

此致, A.M.

我认为在这个 class 中您将无法指定参数何时是必需的或不是动态的,一些选项在 API 定义中指定(指定必需的参数)或者,如果从正文中检索 class,创建一个验证服务来验证字段值,甚至使用 DTO 隐藏那些你不想设置的字段并指定强制性字段,在此选项中 mapstruct 将是有用的。 https://mapstruct.org/

希望对您有所帮助,问候!

编辑:这里是一些 DTO 信息 What is a Data Transfer Object (DTO)?