0
我有以下REST端點:JAX-RS 2.0時存在JSON請求無效的屬性類型不拋出異常
@Stateless
@Path("test")
public class TestResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public TestDTO test(TestDTO dto) {
return dto;
}
}
的TestDTO bean是非常簡單的:
public class TestDTO {
private String id;
private Integer number;
// + getter/setter
}
如果我發佈以下JSON,響應將完全相同(如此平凡示例中的預期):
{
"id": "abc",
"number": 123
}
但是如果我的「數字」發送一個字符串值:
{
"id": "abc",
"number": "NotANumber"
}
服務器根本不會初始化我TestDTO(值= NULL)和我的反應數目變量將是以下幾點:
{
"id": "abc"
}
我不明白... 爲什麼服務器沒有迴應「400 - 錯誤的請求」? :/
這個代碼在WebLogic應用程序服務器版本12.2.1.1.0所提供新澤西實施運行(我只有一個依賴於我的pom.xml:JavaEE的-API版本7.0)
它可能會越來越初始化爲'null',自'number'已初始化爲'null',當轉換爲它必須被忽略'JSON'。你有沒有試過檢查這個選項? –
是的,如果我在回報中放置了一個斷點,那麼「數字」被初始化爲空。但是,這不是我預期的行爲,我認爲...我應該收到400錯誤的請求,而不是 – koD
所以基本上,它試圖將JSON值「NotANumber」轉換爲Java整數,當然它不能但拋出一個異常,它會繼續......所以我不能知道我的客戶端是否不給我發送號碼,或者他是否給我發錯了...... – koD