swagger @ApiModelProperty List<String> 属性的示例值

2022-09-01 00:09:12

我有一个类,其中有一个属性是List<String>

public class MyClass {
    ....
    @ApiModelProperty(position = 2)
    private List<String> productIdentifiers;
    ....
}

此代码生成示例值,如下所示:

{
  "customerId": "1001",
  "productIdentifiers": [
    "string"
  ],
  "statuses": [
    "NEW"
  ]
}

此处显示的示例值无效。我预期的示例值应该是这样的:

{
  "customerId": "1001",
  "productIdentifiers": [
    "PRD1",
    "PRD2",
    "PRD3"
  ],
  "statuses": [
    "NEW"
  ]
}

我尝试按如下方式传递示例属性,但它没有生成正确的值:

@ApiModelProperty(position = 2, example = "PRD1, PRD2, PRD3")
// This generates -> "productIdentifiers": "PRD1, PRD2, PRD3" // Its not json array

@ApiModelProperty(position = 2, example = "[\"PRD1\", \"PRD2\", \"PRD3\"]")
// This generates -> "productIdentifiers": "[\"PRD1\", \"PRD2\", \"PRD3\"]" // Its too not json array

有没有办法为List属性生成正确的示例值?

更新:

我已经尝试了@nullpointer和@Zeeshan Arif提出的解决方案

@ApiModelProperty(position = 2, dataType="List", example = "PRD1, PRD2, PRD3")
private List<String> productIdentifiers;
//This generates -> `"productIdentifiers": "PRD1, PRD2, PRD3"`

更新 2 :

尝试了以下未产生正确响应的方法

@ApiModelProperty(position = 2, dataType="java.util.List<String>", example = "PRD1, PRD2, PRD3")
// This generates -> "productIdentifiers": "PRD1, PRD2, PRD3"


@ApiModelProperty(position = 2, dataType="String[]", example = "PRD1, PRD2, PRD3")
// This generates -> "productIdentifiers": "PRD1, PRD2, PRD3"

我对swagger jar的依赖性是:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.5.0</version>
    <exclusions>
        <exclusion>
            <artifactId>mapstruct</artifactId>
            <groupId>org.mapstruct</groupId>
        </exclusion>
    </exclusions>
</dependency>

针对此问题更新 github 票证


答案 1

我设法让它工作,生成一个字符串列表。

在带有 springfox 2 的 ApiModelProperty 中,编写示例如下:

example = "[\"AddLine1\",\"AddLine2\",\"AddLine3\",\"AddLine4\"]"

这是我的例子:

@ApiModelProperty(value = "Address", name = "addLines", 
    example = "[\"AddLine1\",\"AddLine2\",\"AddLine3\",\"AddLine4\"]")

当我呈现 swagger 页面时,我得到以下输出:

"addLines": [
      "AddLine1",
      "AddLine2",
      "AddLine3",
      "AddLine4"
    ],

答案 2

TLDR:Swagger-API的一位贡献者已经致力于在3.0.0版本中添加此功能,但目前还不确定何时发布。目前,它位于Swagger-API GitHub的profeature/3.0.0-rc2分支上。

我已经与Swagger合作了近两个月,随着我们项目的进展,这样的问题出现了。现在我做了一些研究,并在Swagger-API的GitHub页面上读到,这个功能根本不起作用(还没有)。

这里所述,[这里将是另一个链接,但我的声誉不够高,无法发布超过2个链接]自2015年8月以来,此功能已被多次请求,运气不佳。

现在在Swagger-API github上讨论这个问题,其中一位贡献者评论道:

这需要对模型进行重大重构,这正在进行中。3 三月 2017

这导致了后面的评论:

将在 3.0.0 支持中受支持,有关详细信息,请参阅功能/3.0.0-rc2 分支。27 六月 2017

2017年8月9日,有人问3.0.0版本何时发布,没有进一步的回应。

因此,总而言之,对数组/列表示例的支持已经完成,并且应该在3.0.0版本中可用,但没有更多关于何时发布的消息。


推荐