Dropwizard returns 400 有效 GET

Dropwizard returns 400 on valid GET

我正在开发 Dropwizard app and am facing a strange bug on a GET request after I have included mongojack

我有一个简单的 GET 查询,其中 ID 作为路径参数。它在我包含 mongojack 并向我的实体添加两个注释之前起作用:

public class Bill {
    @javax.persistence.Id @org.mongojack.ObjectId
    private String id;

    @javax.persistence.Id @org.mongojack.ObjectId
    public String getId() { return id; }

    //...
}

最让我疑惑的是这个请求竟然被接受了。当我调试时,我可以进入方法。该实体从 MongoDB 加载到内存中并且看起来很好。所以我怀疑这实际上可能是序列化问题,但目前我被卡住了。有什么想法吗?

更新

似乎是一个已知的 mongojack 问题:https://github.com/devbliss/mongojack/issues/26。后来我想为我的 GET 使用不带 ObjectId 的自定义 DTO,所以这应该不再相关了。我仍然不明白的是为什么 Dropwizard 将此映射到 400 响应...

What I still don't understand is why Dropwizard maps this to a 400 response

如您所知,

Dropwizard 通过 Jackson 使用所有 getter(或 @JsonProperty 注释 fields/methods)生成 JSON。如果 getter(或反序列化时的 setter)发生任何异常,dropwizard 会自动 returns 400 Bad Request.

我想这是有道理的,因为它需要简单的 POJO DTO 和愚蠢的 getter 和 setter。