Kotlin中JAX-RS与Bean Validation:能否废弃@NotNull注解?
Kotlin非空类型在JAX-RS(Quarkus/RESTEasy)中不被识别为必填参数的问题
在Kotlin中编写JAX-RS接口时,我们会通过非空类型声明必填参数,比如这段代码:
@GET fun hello(@QueryParam("myParam") myParam: String): String = myParam
从Kotlin语法层面,myParam已经被明确标记为不可为空,语义上就是必填参数。
但在Quarkus环境搭配RESTEasy作为JAX-RS实现时,这个非空声明并不会触发参数必填校验——即便请求完全不带myParam,接口也不会返回参数缺失的错误。要让参数真正被校验为必填,必须额外添加@NotNull Bean Validation注解。
这种情况对Kotlin开发者来说非常反直觉,因为我们已经通过Kotlin的非空类型表达了“参数必填”的语义,却还要重复添加注解来实现相同的校验逻辑。
内容的提问来源于stack exchange,提问作者Marcel Stör
相关产品推荐
相关产品推荐

