为什么 @ApiModelProperty 的 "name" 属性没有效果?

6
在我的Spring Boot应用中,我有一个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<>();
}

一个Post请求的Swagger示例值:

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


我曾以为在@ApiModelProperty中的name = ...属性会覆盖变量名phoneNumberDTOList,但它并没有起作用 :(

我使用的是 springfox-swagger 2.9.2 版本。

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

我做错了什么?
1个回答

5
请查看此问题:

@ApiModelProperty "name"属性没有效果

  • 我们不希望出现序列化模型与文档不一致的情况。

  • 实际上,@ApiModelProperty 的存在是由于我们想使用与 swagger-core 相同的注释。但是,我们采用的是仅使用注释作为补充文档的理念。例如,如果您已经使用@JsonProperty等注释对模型进行了注释,我们不希望使用 @ApiModelProperty 来重复这个过程,因为很容易出现不同步的情况。

有一个带有@JsonProperty注释的解决方法:

...

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

哇,这个问题来自2016年11月...感谢你 - 这可以使用@JsonProperty解决。 - m1well
@JsonProperty会在SwaggerUI上隐藏列名,还有其他选项吗? - NanoNova

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接