Dropwizard возвращает 400 при действительном GET

Я разрабатываю приложение Dropwizard и столкнулся со странной ошибкой в ​​запросе GET после включения монгоджек.

У меня есть простой запрос GET с идентификатором в качестве параметра пути. Это работало до того, как я включил 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 в память и выглядит нормально. Поэтому я подозреваю, что это может быть проблема с сериализацией, но в настоящее время я застрял. Любые идеи?

Обновить

Кажется, это известная проблема с монгоджеком: https://github.com/devbliss/mongojack/issues/26. . Позже я все равно хочу использовать пользовательские DTO без ObjectId для своих GET, так что это больше не должно иметь значения. Чего я до сих пор не понимаю, так это почему Dropwizard сопоставляет это с ответом 400...


person EagleBeak    schedule 01.06.2015    source источник


Ответы (1)


Чего я до сих пор не понимаю, так это почему Dropwizard сопоставляет это с ответом 400

Dropwizard через Джексона генерирует JSON, используя все геттеры (или @JsonProperty аннотированные поля/методы), как вы знаете. Если возникает какое-либо исключение в геттерах (или сеттерах при десериализации), dropwizard автоматически возвращает 400 Bad Request.

Я думаю, это имеет смысл, поскольку он ожидает простых POJO DTO с тупыми геттерами и сеттерами.

person Natan    schedule 01.06.2015