SpringBootでのリクエストパラメータのバリデーションはどのように実装しますか?

Spring Bootでは、リクエストパラメータを検証するために、Springフレームワークが提供する@Validatedと@Validアノテーションを使用することができます。

最初に、以下の依存関係をpom.xmlファイルに追加する必要があります。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

その後、Controllerクラスのメソッドパラメータに@Validated注釈を使用し、検証が必要なパラメータの前に@Valid注釈を使用します。例えば、

import org.springframework.validation.annotation.Validated;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;

@RestController
@Validated
public class UserController {

    @PostMapping("/users")
    public ResponseEntity createUser(@Valid @RequestBody User user) {
        // 处理创建用户的逻辑
        // ...
    }
    
}

public class User {

    @NotBlank(message = "用户名不能为空")
    private String username;

    // getter和setter方法
    // ...
}

上記の例では、usernameパラメーターを検証するために@NotBlankアノテーションを使用しています。パラメーターが空であるか、空白のみで構成されている場合には、検証エラーが発生し、応答結果には該当するエラーメッセージが含まれます。

その他にも、カスタム検証アノテーションを作成することもできます。

import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.constraints.Pattern;
import java.lang.annotation.*;

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {})
@Pattern(regexp = "^[A-Z0-9]{8}$", message = "订单号必须是8位大写字母和数字的组合")
@Documented
public @interface OrderNo {
    String message() default "";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

public class Order {

    @OrderNo
    private String orderNo;

    // getter和setter方法
    // ...
}

自作のバリデーションアノテーション内で、Springの@Patternなどのアノテーションを利用して基本的なバリデーションルールを定義し、それに独自のバリデーションルールを組み合わせて検証することができます。

Spring Bootを使用してリクエストパラメータのバリデーションを行う方法について説明しました。実際の開発では、具体的なビジネス要件に合わせてバリデーションアノテーションを定義して使用することで、リクエストパラメータの有効性を確保できます。

bannerAds