2017-05-28 3 views
0

私はSpring-Bootを使用してRESTサービスを構築しました。すべてうまく動作します。しかし、自分のcurlコマンドをPOJO変数のPOSTで誤った名前に更新すると、デフォルト値のオブジェクトが取得されます。POSTをRESTサービスに送信するときに予期せずJSON解析が発生する

私のエンティティは次のようになります。私はそうのように私のサービスに対してPOSTを実行

@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(); 
    } 

} 

curl -i -X POST -H "Content-Type:application/json" -d "{ \"uId\" : \"1\", \"numC\" : \"3\", \"numI\" : \"2\" }" http://localhost:8080/user-task 

POSTため返された状態が201で、レコードが、この場合には(書かれています更新された)。デバッグすると、UserTaskインスタンスがRESTコントローラメソッドに渡され、nulluserId0numComplete0numIncompleteとなっています。私は、JSONパーサーがUserTaskインスタンスとしてPOST JSONのコンテンツを非整列化できなかったときに失敗したと思いましたか?

答えて

0

JSONSchemaを使用して、Hibernate Validatorの@RequestBodyまたは@Validを検証できます。したがって、POJOがこの検証に合致しない場合、たとえばRequiredParametersの例外をスローすることができます。

yourMethod(@RequestBody @Valid UserTask) 
+0

ありがとうございます。私はこれを試して、報告して戻します。 – njk2015

+0

この例を見てください。https://www.mkyong.com/spring-mvc/spring-rest-api-validation/ – JorgeTovar

関連する問題