Swagger架构-模式未应用于字符串数组



所以我有一个swagger模式描述为:

MyStringArrayObject:
properties:
myStringArray:
type: array
minItems: 1
items:
type: string
pattern: ^d+-.*-.+d+$
maxLength: 100
required:
- myStringArray

我生成的类如下(我提交了构造函数、hashCode、equals等(:

@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.JavaClientCodegen")
public class MyStringArrayObject implements Serializable{
@SerializedName("myStringArray")
private List<String> myStringArray = new ArrayList<>();
@NotNull
@Size(min=1)  @Schema(required = true)
public List<String> getMyStringArray() {
return myStringArray;
}
public void setMyStringArray(List<String> myStringArray) {
this.myStringArray = myStringArray;
}
}

为什么没有定义使用patternmaxLength验证阵列(列表(项?插件不能做到这一点吗?我错过了什么?

如果它有帮助,这里是我的插件配置:

<plugin>
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.18</version>
<executions>
<execution>
<id>execution-swagger-models</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<language>java</language>
<library>okhttp-gson</library>
<output>${project.build.directory}/generated-sources/swagger</output>
<configOptions>
<serializableModel>true</serializableModel>
<dateLibrary>java8-localdatetime</dateLibrary>
<useBeanValidation>true</useBeanValidation>
<sourceFolder>.</sourceFolder>
</configOptions>
<generateApis>false</generateApis>
<generateModelDocumentation>false</generateModelDocumentation>
<generateModelTests>false</generateModelTests>
<generateSupportingFiles>false</generateSupportingFiles>
<environmentVariables>
<!-- generate all models -->
</environmentVariables>
<inputSpec>${project.basedir}/src/main/resources/myProject.yml</inputSpec>
<modelPackage>my.model</modelPackage>
</configuration>
</execution>
</executions>
</plugin>

提前感谢!

我确实遇到了这个问题,希望在Swagger和OpenApi生成器的未来版本中解决这个问题。

作为一种变通方法,将其封装在另一个对象中,languages就是我所指的对象

Channel:
type: object
required:
- channelName
properties:
channelAccountId:
type: string
format: UUID
readOnly: true
languages:
type: array
items:
$ref: '#/components/schemas/Languages'

Languages:
properties:
language:
type: string
pattern: '[a-zA-Z]{2,3}([-/][a-zA-Z]{2,3})?'

类的生成方式如下。

@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2021-06-29T16:57:18.931915-07:00[America/Phoenix]")
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "channelName", visible = true)
@JsonSubTypes({
@JsonSubTypes.Type(value = EMAIL.class, name = "email"),
@JsonSubTypes.Type(value = RCS.class, name = "rcs"),
})
public class Channel   {
@JsonProperty("channelAccountId")
private UUID channelAccountId;
@JsonProperty("languages")
@Valid
private List<Languages> languages = null;
....
}
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2021-06-29T16:57:18.931915-07:00[America/Phoenix]")
public class Languages   {
@JsonProperty("language")
private String language;
public Languages language(String language) {
this.language = language;
return this;
}

@ApiModelProperty(value = "")
@Pattern(regexp="[a-zA-Z]{2,3}([-/][a-zA-Z]{2,3})?") 
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
}

最新更新