2017-05-28 74 views
0

我使用Spring-Boot构建了REST服务。一切正常。但是,当我更新我的curl命令来POST我的POJO变量的错误名称时,我得到一个具有默认值的对象。将POST发送到REST服务时意外传递JSON解析

我的实体的样子:

@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控制器方法的默认值为null,对于userId0对于numComplete0对于numIncomplete。我认为JSON解析器在无法将POST JSON内容解组为UserTask实例时会失败?

回答

0

您可以使用JSONSchema来验证Hibernate验证器的@RequestBody或@Valid,因此如果POJO不符合此验证,则可以抛出RequiredParameters的例外。

yourMethod(@RequestBody @Valid UserTask) 
+0

谢谢。我会试试这个报告。 – njk2015

+0

看看这个例子https://www.mkyong.com/spring-mvc/spring-rest-api-validation/ – JorgeTovar

相关问题