如何在Kotlin中用Quarkus Smallrye Openapi标记整型字段为必填
解决Quarkus SmallRye OpenAPI未标记Kotlin数据类非空字段为必填的问题
针对你遇到的问题,这里有两个可行的解决办法:
方法一:开启Kotlin非空类型自动映射配置
在application.properties中添加以下配置,让SmallRye OpenAPI自动将Kotlin的非空类型字段标记为必填:
quarkus.smallrye-openapi.kotlin.non-null-as-required=true
这个配置会让所有非空的Kotlin属性自动加入OpenAPI Schema的required列表,无需额外添加注解。配置后重新生成的Schema会自动把id和name纳入必填字段。
方法二:使用字段级别的@Schema注解
如果不想全局开启自动映射,可以给id字段添加字段级的@Schema注解(注意要加@field:前缀,指定注解作用在字段上而非构造函数参数):
import org.eclipse.microprofile.openapi.annotations.media.Schema data class Fruit( @field:Schema(required = true) val id: Long, val name: String )
这样就能强制将id标记为必填字段。
为什么之前的注解无效?
你之前尝试的注解大多未指定作用目标,Kotlin默认会把注解应用在构造函数参数上,而SmallRye OpenAPI需要读取字段级别的注解才能正确识别必填项,因此加上@field:前缀是关键。
内容的提问来源于stack exchange,提问作者Luca Battistelli
相关产品推荐
相关产品推荐

