как использовать пользовательскую аннотацию Java в спецификации openapi 3

#java #spring-boot #swagger #openapi

#java #весенняя загрузка #развязность #openapi

Вопрос:

Просто интересно, есть ли способ, которым я могу использовать свою пользовательскую аннотацию в спецификации openapi.

Сценарий-

Пользовательский объект — мне нужно иметь проверку notnull между именем пользователя или электронной почтой. любой из них должен быть предоставлен в запросе

введите описание изображения здесь

Для этого я могу создать пользовательскую аннотацию в коде, что-то вроде @ValidateUserNameAndEmail , но не нахожу способа применить это в спецификации openapi и включить ее как другую аннотацию в сгенерированный код.

Ответ №1:

Я использую последнюю версию (6.2.1) openapi-generator-maven-plugin , и для меня работает следующее.

 User:
  type: object
  x-class-extra-annotation: "@org.example.ValidateUsernameAndEmail"
  ...
  

Плагин генерирует следующий класс:

 @Schema(name = "User ")
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2022-11-24T14:51:09.277810200 01:00[Europe/Prague]")
@org.example.ValidateUsernameAndEmail
public class User {
    ...
}
  

Вы также можете определить аннотацию на уровне поля с помощью x-field-extra-annotation , если это необходимо.

Ответ №2:

Я не думаю, что это возможно. Вы можете использовать аннотации проверки, предоставляемые openapi, такие как @NotNull