环境:Java,Jersey with Jackson,Tomcat。
我有一个从客户端获取 JSON 输入的休息服务。我想验证输入,如果它是 JSON,然后是 JSON,那么 JSON 输入中的键是否符合预期。如果是,那么它应该产生 HTTP 400-Bad 请求。
例如-
// 休息服务 @邮政 @Path("登录") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) 公共响应登录(凭据登录, @Context HttpServletRequest httpRequest) { 如果(登录 == 空) // 返回 sendBadRequest(HTTP 400); String userName = (String) login.getUsername(); String passWord = (String) login.getPassword(); 如果(用户名 == 空) // 返回 sendBadRequest(HTTP 400); else if (passWord == null) // 返回 sendBadRequest(HTTP 400); ...... } // 凭据.java @JsonIgnoreProperties(ignoreUnknown=true) 公共类凭证{ 私人字符串用户名; 私人字符串密码; // getter 和 setter... }
例如 - 非 json 输入,如
{“键”:“值”应该产生 HTTP 400。以及带有不正确值的输入,例如
{“用户名”:“abc”,“密码”:“abc”}应该产生 HTTP 400。
我的代码适用于提到的案例 2,但我希望它也适用于案例 1。当存在非 json 输入时,我希望它将 Credential 对象设置为 null,然后我可以将“if”中的 null 对象返回 HTTP 400。但事实并非如此。休息框架是否为这种情况提供了什么?