我使用Spring-Boot构建了一个REST服务。一切正常。但是,当我将curl
命令更新为POST POJO变量的错误名称时,我得到一个具有默认值的对象。
我的实体看起来像:
@Entity
public class UserTask {
@Id
private Long userId;
private int numComplete;
private int numIncomplete;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public int getNumComplete() {
return numComplete;
}
public void setNumComplete(int numComplete) {
this.numComplete = numComplete;
}
public int getNumIncomplete() {
return numIncomplete;
}
public void setNumIncomplete(int numIncomplete) {
this.numIncomplete = numIncomplete;
}
@Override
public String toString() {
return new StringBuilder("[id : ").append(getUserId())
.append(", complete : ").append(getNumComplete())
.append(", incomplete : ").append(getNumIncomplete())
.append("]").toString();
}
}
我对我的服务执行POST,如下所示:
curl -i -X POST -H "Content-Type:application/json" -d "{ \"uId\" : \"1\", \"numC\" : \"3\", \"numI\" : \"2\" }" http://localhost:8080/user-task
POST
的返回状态为201
,并在数据库中写入记录(在本例中为已更新)。调试时,我发现传入REST控制器方法的UserTask
实例的null
默认值为userId
,0
的{{1}}和{{1}对于numComplete
。我认为当JSON解析器无法将POST JSON内容解组为0
实例时,它会失败吗?
答案 0 :(得分:0)
您可以使用JSONSchema来验证Hibernate Validator的@RequestBody或@Valid,因此如果POJO没有遇到此验证,您可以抛出一个RequiredParameters例外。
yourMethod(@RequestBody @Valid UserTask)