環境:Java,Jersey與Jackson,Tomcat。JSON驗證休息服務
我有一個從客戶端採取JSON輸入的休息服務。我想驗證輸入,如果它的JSON與否,然後它JSON那麼JSON輸入中的鍵是否如預期的那樣。如果是,那麼它應該產生HTTP 400-錯誤的請求。
對於示例 -
// REST SERVICE @POST @Path("login") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response login(Credentials login, @Context HttpServletRequest httpRequest) { if (login == null) // return sendBadRequest(HTTP 400); String userName = (String) login.getUsername(); String passWord = (String) login.getPassword(); if (userName == null) // return sendBadRequest(HTTP 400); else if (passWord == null) // return sendBadRequest(HTTP 400); ..... } // Credentials.java @JsonIgnoreProperties(ignoreUnknown=true) public class Credentials { private String username; private String password; // Getters and setters... }
例如 - 像
{"key" : "val"非JSON輸入應該產生HTTP 400除了輸入與非適當的值等
{"usernames" : "abc", "passwords" : "abc"}應產生HTTP 400
我的代碼工作良好案例2提到,但我預計它也適用於案例1。當非json輸入存在時,我期望它將Credential對象設置爲null,然後我可以使用'if'中的空對象返回HTTP 400.但事實並非如此。框架爲這種情況提供了什麼?
我知道。我想用Java Jersey框架來處理異常,而不是我的代碼,我比較字符串。感謝您的建議,但那不是我想要的 – AnujKu 2013-04-04 22:16:09