2017-08-10 3 views
0

春の起動時にパッチ要求のボディを検証する方法はありますか?任意のユーザが "XX" および "SE" などの "パス"(フィールド)として "OP"(フィールド)で要求を送信した場合パッチ要求のボディを検証する-Springブート

Ex: 
[ 
    {"op": "replace", "path": "/id", "value": "foo"}, 
    {"op": "replace", "path": "/id2", "value": "foo2"} 
] 

。それを検証し、契約を変更せずに400(Bad Request)を投げる方法はありますか?

+0

。独自のRESTコントローラを作成しましたか? '' op ''が特定の値であることを確認しますか?(例えば、 '' replace ''' 'xx''ではなく)契約を変更せずに何を意味するのですか?あなたのリクエストボディ構造は契約ですか? – g00glen00b

+1

あなたはこの記事を読むことができます:http://www.baeldung.com/spring-data-rest-validators – SkyWalker

+0

@ g00glen00bはい。私は要求のボディを意味しました。 私の質問では、 "op"フィールドは "op"の値ではない( "replace") –

答えて

2

私はこれを解決するために多くの方法を試しました。しかし、最終的にはこの解決策が必要でした。

私のパッチ要求署名は:

public void patch(@RequestBody List<PatchOperation> operations) 

私は有効なパッチ鍵を検証するために簡単な関数を作成したが、要求に存在しています。

void validatePatchOperation(PatchOperation patchOperation) { 
    if (patchOperation.getOp() == null) { 
     throw new BadRequestException(); 
    } 
    if (patchOperation.getPath() == null) { 
     throw new BadRequestException(); 
    } 
    if (patchOperation.getValue() == null) { 
     throw new BadRequestException(); 
    } 
} 

内部にこれを使用する。これは、私には本当に明確ではないため、各

関連する問題