Почему атрибут @apimodelproperty "name" не действует?

В моем весеннем загрузочном приложении у меня есть объект DTO с вложенным списком объектов DTO. класс:

@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "contact")
public class ContactDTO {
  @ApiModelProperty(value = "id", example = "1", hidden = true)
  private Long id;

  @ApiModelProperty(value = "first name", example = "John")
  private String firstName;

  @ApiModelProperty(value = "last name", example = "Doe")
  private String lastName;

  @Builder.Default
  @ApiModelProperty(value = "list of phone numbers", name = "phonenumbers")
  List<PhoneNumberDTO> phoneNumberDTOList = new ArrayList<>();
}

пример значения swagger для почтового запроса:

{
  "firstName": "John",
  "lastName": "Doe",
  "phoneNumberDTOList": [
    {
      "label": "Company",
      "number": "put number here"
    }
  ]
}


Я думал, что свойство name = ... в @ApiModelProperty перезаписывает имя переменной phoneNumberDTOList, но это не работает: (

Я использую springfox-swagger 2.9.2

  implementation 'io.springfox:springfox-swagger2:2.9.2'
  implementation 'io.springfox:springfox-swagger-ui:2.9.2'


Что я делаю неправильно?

4
0
7 130
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пожалуйста, проверьте эту проблему:

Атрибут "name" @ApiModelProperty не действует

  • We don't want ever to have a case where the serialization model is different from whats being documented.

  • Actually the existence of @ApiModelProperty is explained by the fact that we want to use the same annotations that swagger-core uses. However we take the philosophy of using the annotations just to supplement documentation. If for e.g. you've annotated your models with @JsonProperty etc we don't want to duplicate that using @ApiModelProperty as it is very easy to get out of sync.

Существует обходной путь с аннотацией @JsonProperty:

...

@JsonProperty("phonenumbers")
@ApiModelProperty(value = "list of phone numbers")
List<PhoneNumberDTO> phoneNumberDTOList = new ArrayList<>();

вау, этот выпуск с ноября 2016 года ... благодаря вам - он работает с @JsonProperty

m1well 31.10.2018 14:31

@JsonProperty исчезнет имя столбца в SwaggerUI, есть ли другой вариант?

NanoNova 12.06.2020 11:15

Другие вопросы по теме