paths - swagger example java
Valor de ejemplo de Swagger @ApiModelProperty para la propiedad List<String> (5)
Tengo una clase en la que hay una propiedad que es List<String>
public class MyClass {
....
@ApiModelProperty(position = 2)
private List<String> productIdentifiers;
....
}
Este código genera los valores de ejemplo de la siguiente manera:
{
"customerId": "1001",
"productIdentifiers": [
"string"
],
"statuses": [
"NEW"
]
}
Los valores de ejemplo aquí mostrados no son válidos. Mis valores de ejemplo esperados deberían ser como:
{
"customerId": "1001",
"productIdentifiers": [
"PRD1",
"PRD2",
"PRD3"
],
"statuses": [
"NEW"
]
}
He intentado pasar el atributo de ejemplo como sigue pero no genera el valor adecuado:
@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
¿Hay alguna manera de que pueda generar un valor de ejemplo adecuado para la propiedad de lista?
Actualización:
He probado las soluciones sugeridas por @nullpointer y @Zeeshan Arif
@ApiModelProperty(position = 2, dataType="List", example = "PRD1, PRD2, PRD3")
private List<String> productIdentifiers;
//This generates -> `"productIdentifiers": "PRD1, PRD2, PRD3"`
Actualización 2:
Intentado siguiendo el enfoque que no generó una respuesta adecuada
@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"
Mi dependencia de maven para jarrón es:
<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>
Actualizar el ticket de github para este problema
Intente inicializar @ApiModelProperty
siguiente manera:
public class MyClass {
....
@ApiModelProperty(
position = 2, datatype="List", example = "PRD1, PRD2, PRD3"
)
private List<String> productIdentifiers;
....
}
Logré que esto funcionara, generando una lista de cadenas.
Dentro de ApiModelProperty, defina el tipo de datos como una lista y escriba su ejemplo de la siguiente manera:
example = "[AddLine1,AddLine2,AddLine3,AddLine4]"
Aquí está mi ejemplo:
@ApiModelProperty(value = "Address", name = "addLines", dataType = "List",
example = "[AddLine1,AddLine2,AddLine3,AddLine4]")
Cuando renderizo la página de swagger, obtengo el siguiente resultado:
"addLines": [
"AddLine1",
"AddLine2",
"AddLine3",
"AddLine4"
],
Solo usas la notación de Reflection
. Utilizando
@ApiModelProperty(dataType = "[Ljava.lang.String;")
Funciona bien, pero no puedo poner ejemplos.
Este es el resultado:
{
"field": [
"string"
]
}
Una solución fea hasta que tengamos esta característica correctamente admitida, que produce ejemplos para listas con un solo elemento, pero al menos permite mostrar algo más útil que solo "string"
es mediante el uso de allowableValues
:
@ApiModelProperty(position = 2, allowableValues = "PRD1")
// This generates -> "productIdentifiers": ["PRD1"]
TLDR: uno de los contribuyentes en Swagger-API ha trabajado en esta funcionalidad para agregar esto en la versión 3.0.0, pero aún no está seguro de cuándo se lanzará. Por ahora se encuentra en la rama / 3.0.0-rc2 de la función en Swagger-API GitHub
He estado trabajando con Swagger durante casi dos meses y, a medida que nuestro proyecto avanzaba, surgieron problemas como este. Ahora investigué un poco y leí en las páginas de GitHub para el Swagger-API que esta función simplemente no funciona (aún).
Como se describe here y [aquí sería otro enlace, pero mi reputación no es lo suficientemente alta como para publicar más de 2 enlaces], esta función se ha solicitado varias veces desde agosto de 2015 sin mucha suerte.
Ahora sobre este tema en el github de Swagger-API , uno de los colaboradores comentó:
Esto requiere una importante refactorización de los modelos, que está en camino. 3 de marzo de 2017
lo que llevó a un comentario posterior:
Se admitirá en el soporte 3.0.0, consulte la característica / 3.0.0-rc2 branch para más detalles. 27 de junio de 2017
Y el 9 de agosto de 2017, alguien preguntó cuándo sería el lanzamiento de la versión 3.0.0 sin más respuesta.
Así que, en conclusión, se ha trabajado en el soporte para ejemplos de arrays / listas y debería estar disponible en la versión 3.0.0, pero no más noticias sobre cuándo se publicará.