1

我正在开发一个Dropwizard应用程序,在包含mongojack后,我在 GET 请求中遇到了一个奇怪的错误。

我有一个简单的 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 使用没有 ObjectIds 的自定义 DTO,所以这应该不再相关。我仍然不明白的是为什么 Dropwizard 将其映射到 400 响应...

4

1 回答 1

0

我仍然不明白的是为什么 Dropwizard 将其映射到 400 响应

Dropwizard,通过 Jackson,使用@JsonProperty您所知道的所有 getter(或带注释的字段/方法)生成 JSON。如果 getter(或反序列化的 setter)发生任何异常,dropwizard 会自动返回400 Bad Request.

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

于 2015-06-01T20:29:48.337 回答