Mig*_*noz 7 code-generation bean-validation swagger
Swagger 为 Spring 服务器生成的代码有一个名为 useBeanValidation 的选项,但我不知道如何使用它。我找不到任何文档告诉我它支持哪些验证,所以我决定自己尝试一下。OpenAPI 规范对架构对象属性的描述列出了这些属性:
title
multipleOf
maximum
exclusiveMaximum
minimum
exclusiveMinimum
maxLength
minLength
pattern
maxItems
minItems
uniqueItems
maxProperties
minProperties
required
enum
Run Code Online (Sandbox Code Playgroud)
所以我尝试将其中一些属性添加到我创建的对象的字段中。这是我的 .yaml 文件的相关部分:
components:
schemas:
Dummy:
type: object
properties:
iMinMax:
type: integer
format: int32
minimum: 0
maximum: 100
dMinMaxEx:
type: number
format: int32
minimum: 5.0
maximum: 10.0
exclusiveMinimum: false
exclusiveMaximum: true
dMinExMaxEx:
type: number
format: int32
minimum: 5.0
maximum: 10.0
exclusiveMinimum: true
exclusiveMaximum: true
dMinExMax:
type: number
format: int32
minimum: 5.0
maximum: 10.0
exclusiveMinimum: true
exclusiveMaximum: false
sArray:
type: array
items:
type: string
minItems: 5
maxItems: 10
uniqueItems: true
sLen:
type: string
format: text
minLength: 5
maxLength: 10
Run Code Online (Sandbox Code Playgroud)
我打开了Spring代码生成器的bean验证选项,生成了服务端代码,但是没有任何效果。它生成的代码与关闭该选项时完全相同。有谁知道如何使用 Swagger 的 Bean Validation 选项?
Cod*_*per 12
有 2 个属性会影响最新版本的生成器中的 bean 验证(我最后检查的是 3.3.4)。这些属性是performBeanValidation
和useBeanValidation
(false
默认情况下都是)。要了解它们是如何工作的,您应该查看生成器与生成器属性结合使用的 mustache 模板。这些可以在JavaSpring Mustache 文件中找到。
例如,performBeanValidation
如果您的 API yaml 包含使用 format: email
. 与performBeanValidation=true
所述发电机输出@Email
的验证注解。随着performBeanValidation=false
你不会看到这个注解。这可以通过查看以下 mustache 文件来理解:beanValidationCore
您可以通过将原始 Mustache 文件从源位置复制到您自己的项目位置并根据需要对其进行修改来覆盖这些 Mustache 模板中的任何一个。然后将项目位置作为参数或属性提供给生成器。例如templateDirectory=src/main/resources/mustache
块引用
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>${openapi-codegen-version}</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>api.yaml</inputSpec>
<output>target/generated-sources</output>
<apiPackage>my.package.api</apiPackage>
<modelPackage>my.package.api.model</modelPackage>
<generatorName>spring</generatorName>
<templateDirectory>src/main/resources/mustache</templateDirectory>
<!--<configHelp>true</configHelp>-->
<!--<verbose>true</verbose>-->
<configOptions>
<dateLibrary>java8-localdatetime</dateLibrary>
<java8>false</java8>
<interfaceOnly>true</interfaceOnly>
<performBeanValidation>true</performBeanValidation>
<useBeanValidation>true</useBeanValidation>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6484 次 |
最近记录: |