忽略 属性 以进行声明性客户端 URI 参数的类型转换

Ignore property for type conversion of declarative client URI argument

我正在 Micronaut 中实现一个声明式客户端,如下所示:

@Get("/dostuff{?requestObject*}")
fun getStuff(requestObject: MyRequestObject): String

我的 MyRequestObject 已通过 Javax.Validation 验证,如下所示:

data class MyRequestObject(val anything: String) {

    @AssertTrue
    fun isValid() = true
}

当我现在通过客户端发送请求时,来自 requestObject 的值生成以下查询 /?anything=helloworld&valid=true。我需要从查询中排除 isValid 函数的值。

现在我有两个问题

  1. Micronaut 使用什么机制"deserialize" 对象?
  2. 如何实现 valid 字段不包含在查询中?

URL 的扩展发生在此处:https://github.com/micronaut-projects/micronaut-core/blob/7cd78cf8b03cc78ac31bc2c262e86eae6edd58f0/http/src/main/java/io/micronaut/http/uri/UriTemplate.java#L202

通过内省 api 或反射 class 被检查并转换为地图。目前无法以这种方式排除属性。请提交问题以建议改进此功能。