环境: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