Dropwizard mengembalikan 400 pada GET yang valid

Saya sedang mengembangkan aplikasi Dropwizard dan saya menghadapi bug aneh pada permintaan GET setelah saya menyertakan mongojack.

Saya memiliki kueri GET sederhana dengan ID sebagai parameter jalur. Ini berfungsi sebelum saya memasukkan mongojack dan menambahkan dua anotasi ke entitas saya:

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

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

    //...
}

Yang paling membuatku bingung adalah permintaan itu benar-benar diterima. Saat saya melakukan debug, saya bisa masuk ke metodenya. Entitas dimuat dari MongoDB ke dalam memori dan terlihat baik-baik saja. Jadi saya menduga ini sebenarnya masalah serialisasi, tetapi saat ini saya mengalami kebuntuan. Ada ide?

Perbarui

Tampaknya merupakan masalah mongojack yang diketahui: https://github.com/devbliss/mongojack/issues/26. Nanti saya ingin menggunakan DTO khusus tanpa ObjectIds untuk GET saya, jadi ini seharusnya tidak relevan lagi. Yang masih tidak saya mengerti adalah mengapa Dropwizard memetakan ini ke respons 400...


person EagleBeak    schedule 01.06.2015    source sumber


Jawaban (1)


Yang masih tidak saya mengerti adalah mengapa Dropwizard memetakan ini ke respons 400

Dropwizard, melalui Jackson, menghasilkan JSON menggunakan semua getter (atau @JsonProperty bidang/metode beranotasi) seperti yang Anda ketahui. Jika ada pengecualian yang terjadi pada getter (atau setter pada deserialisasi) dropwizard secara otomatis mengembalikan 400 Bad Request.

Saya rasa itu masuk akal karena ia mengharapkan POJO DTO sederhana dengan pengambil dan penyetel yang bodoh.

person Natan    schedule 01.06.2015