在向POST服务发送POST时,JSON解析意外地传递

时间:2017-05-28 16:46:10

标签: json rest jpa spring-boot

我使用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默认值为userId0的{​​{1}}和{{1}对于numComplete。我认为当JSON解析器无法将POST JSON内容解组为0实例时,它会失败吗?

1 个答案:

答案 0 :(得分:0)

您可以使用JSONSchema来验证Hibernate Validator的@RequestBody或@Valid,因此如果POJO没有遇到此验证,您可以抛出一个RequiredParameters例外。

yourMethod(@RequestBody @Valid UserTask)