环境: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。但事实并非如此。休息框架是否为这种情况提供了什么?