2017-07-26 9 views
0

私は春のブートを使用しています。 POSTリクエストのparamsを検証したいと思います。だから私は@Validatedアノテーションを使っていますが、これはすべてのAPIに対して別のクラスを作成する必要があります。コードをどのように書くべきですか?例えばとしてPOST/GET要求春のブートでのパラメータ検証

、これは

@RequestMapping("/tags/{tagId}/{tagParentId}") 

public Response<Demo> a(@PathVariable int tagId, @PathVariable int tagParentId){ 
    ... code 
} 


@RequestMapping("/data/{courseId}/{instId}") 
public Response<Demo> b(@PathVariable int courseId, @PathVariable int instId){ 
    ... code 
} 

私のAPIでどのように私は私は2つの異なる検証クラスを作成する必要がないことがあっAPIのようにのためのparamsの検証を追加するために自分のコードを変更する必要がありますか?ちょうど1つのクラスと私は別のAPIの異なる機能を追加することができます。

答えて

0

@Validatedを使用して、パラメータが構文上正しいことを確認する必要があります。

int値を使用しているので、これはすでに春に行われています。 tagIdが有効なintでない場合、クライアントはすでにHTTPエラーコードを受け取ります。

指定されたtagIdを持つタグがあるかどうかの検証は、暗黙的にコード内で行われますが、バリデーションを追加する必要はありません。

あなたは、データベースから、たとえばタグを読んで、あなたははtagIdのタグを見つけることができない場合は、あなたが

べき
return new ResponseEntity(HttpStatus.NOT_FOUND); 

お使いのコントローラメソッドから。

ResponseEntityを返すために、コントローラメソッドの戻り値の型を共通のスーパークラスまたはObjectだけに変更する必要があります。

コントローラーメソッドに例外をスローし、スプリングを設定してHttpStatusに関する応答を返すこともできます。 exception-handling-for-rest-with-spring

関連する問題