2017-10-11 8 views
0

どうですか?スプリングブートの休憩サービスでユーザー入力からわずかなプロパティのみを検証する

私はJavaとSpring Bootで休憩サービスを開発しており、javax.validationによるユーザー入力の検証について質問があります。

名前と年齢のプロパティを持つユーザーモデルがあるとします。

また、私は2つのエンドポイント(AとB)を持ち、エンドポイントAでは名前だけを検証し、エンドポイントBではそれは年齢を検証する必要があるとします。

私が直面している問題は、javax.validationを使用すると、両方のエンドポイントで2つのプロパティを検証する必要があることです。特定のエンドポイントで検証する必要があるフィールドだけを検証する方法はありますか?またはエンドポイント内の特定のプロパティの検証を無効にする何らかの方法?検証は関係なく行われることになるドメインクラスに検証を置くことによって

ユーザー パブリッククラスユーザー{

@NotEmpty(message="You need to pass the name parameter") 
    private String name; 

    @NotEmpty(message="You need to pass the age parameter") 
    private int age; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 
} 

ユーザーRestController

@RestController 
@RequestMapping("/v1/user") 
public class UserController { 

    @Autowired 
    private User _user; 

    @RequestMapping(value = "/endpoint-a", method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE}) 
    @ResponseBody 
    public ResponseEntity<?> doPostEndpointA(@Valid @RequestBody User user) { 
     // only validate the user name 
    } 

    @RequestMapping(value = "/endpoint-b", method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE}) 
    @ResponseBody 
    public ResponseEntity<?> doPostEndpointB(@Valid @RequestBody User user) { 
     // only validate the user age 
    } 
} 
+1

春のブートにはAssertsクラスがあります。最初の行に、Assert.notNull(user.getName()、 "nameパラメータを渡す必要があります")のようなコントローラメソッドを書きます。 doc here-https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/Assert.html –

+0

ありがとうございます!それは私に多くの助けになる! –

答えて

0

どのエンドポイントが呼び出されますか。

エンドポイントごとに異なる検証が必要な場合は、コントローラにそのロジックを置き、ドメインクラスからそれを削除します。 が必要な場合は、ドメインクラスの検証を保持し、エンドポイントごとに1つのフィールドのみを検証すれば、デフォルト値で解決できる可能性があります。

関連する問題