Dropwizard ส่งคืน 400 ใน GET ที่ถูกต้อง

ฉันกำลังพัฒนาแอป Dropwizard และกำลังเผชิญกับข้อผิดพลาดแปลกๆ ในคำขอ GET หลังจากที่ฉันได้รวม 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. หลังจากนั้นฉันต้องการใช้ DTO แบบกำหนดเองโดยไม่มี ObjectIds สำหรับ GET ของฉัน ดังนั้นสิ่งนี้จึงไม่เกี่ยวข้องอีกต่อไป สิ่งที่ฉันยังไม่เข้าใจคือเหตุใด Dropwizard จึงแมปสิ่งนี้กับการตอบกลับ 400 ครั้ง...


person EagleBeak    schedule 01.06.2015    source แหล่งที่มา


คำตอบ (1)


สิ่งที่ฉันยังไม่เข้าใจคือเหตุใด Dropwizard จึงแมปสิ่งนี้กับคำตอบ 400

Dropwizard ผ่าน Jackson สร้าง JSON โดยใช้ getters ทั้งหมด (หรือ @JsonProperty ฟิลด์/เมธอดที่มีคำอธิบายประกอบ) ดังที่คุณทราบ หากมีข้อยกเว้นใดๆ เกิดขึ้นกับ getters (หรือตัวตั้งค่าในการดีซีเรียลไลซ์) dropwizard จะส่งคืน 400 Bad Request โดยอัตโนมัติ

ฉันเดาว่ามันสมเหตุสมผลเพราะมันคาดหวัง POJO DTO ธรรมดา ๆ ที่มีตัวรับและผู้ตั้งค่าที่โง่เขลา

person Natan    schedule 01.06.2015