65.2. Cryostat 유효성 검사를 사용하여 서비스 개발


65.2.1. 서비스 주석 처리

65.2.1.1. 개요

Quarkus 유효성 검사를 사용하여 서비스를 개발하는 첫 번째 단계는 관련 검증 주석을 서비스를 나타내는 Java 클래스 또는 인터페이스에 적용하는 것입니다. 검증 주석을 사용하면 서비스가 호출될 때마다 런타임 시 확인되는 메서드 매개변수, 반환 값 및 클래스 필드에 제약 조건을 적용할 수 있습니다.

65.2.1.2. 간단한 입력 매개변수 검증

매개 변수가 간단한 Java 유형인 서비스 메서드의 매개 변수의 유효성을 검사하려면 빈 유효성 검사 API(javax.validation.constraints 패키지)의 제약 조건 주석을 적용할 수 있습니다. 예를 들어 다음 코드 예제에서는 null 속성에 대한 두 매개변수(@NotNull 주석), id 문자열이 \\d+ 정규식(@Pattern 주석)과 일치하는지 여부와 이름 문자열의 길이가 1에서 50 사이의 범위에 있는지 여부를 테스트합니다.

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
...
@POST
@Path("/books")
public Response addBook(
        @NotNull @Pattern(regexp = "\\d+") @FormParam("id") String id,
        @NotNull @Size(min = 1, max = 50) @FormParam("name") String name) {
    // do some work
    return Response.created().build();
}

65.2.1.3. 복잡한 입력 매개변수 검증

복잡한 입력 매개변수(오브젝트 인스턴스)를 검증하려면 다음 예와 같이 @Valid 주석을 매개변수에 적용합니다.

import javax.validation.Valid;
...
@POST
@Path("/books")
public Response addBook( @Valid Book book ) {
    // do some work
    return Response.created().build();
}

@Valid 주석은 자체적으로 제약 조건을 지정하지 않습니다. @Valid 를 사용하여 Book 매개 변수에 주석을 달 때 유효성 검사 엔진에서 Book 클래스의 정의 내에서 확인하도록 효과적으로 지시하여 유효성 검사 제약 조건을 찾도록 지시합니다. 이 예제에서 Book 클래스는 다음과 같이 idname 필드에 대한 검증 제약 조건으로 정의됩니다.

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
...
public class Book {
    @NotNull @Pattern(regexp = "\\d+") private String id;
    @NotNull @Size(min = 1, max = 50) private String name;

    // ...
}

65.2.1.4. 반환 값 검증 (non-Response)

일반 메서드 반환 값(non-Response)에 검증을 적용하려면 메서드 서명 앞에 주석을 추가합니다. 예를 들어 반환 값(@NotNull 주석)을 테스트하고 검증 제약 조건을 재귀적으로 테스트하려면 다음과 같이 get RoleBinding 메서드에 주석을 답니다.

import javax.validation.constraints.NotNull;
import javax.validation.Valid;
...
@GET
@Path("/books/{bookId}")
@Override
@NotNull @Valid
public Book getBook(@PathParam("bookId") String id) {
    return new Book( id );
}

65.2.1.5. 반환 값 검증(응답)

javax.ws.rs.core.Response 오브젝트를 반환하는 메서드에 검증을 적용하려면 응답하지 않는 경우와 동일한 주석을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

import javax.validation.constraints.NotNull;
import javax.validation.Valid;
import javax.ws.rs.core.Response;
...
@GET
@Path("/books/{bookId}")
@Valid @NotNull
public Response getBookResponse(@PathParam("bookId") String id) {
    return Response.ok( new Book( id ) ).build();
}

65.2.2. 표준 주석

65.2.2.1. Cryostat 검증 제약 조건

표 65.1. “Cryostat 유효성 검사를 위한 표준 주석” 은 fields 및 method return values 및 parameters에 대한 제약 조건을 정의하는 데 사용할 수 있는 Cryostat Validation 사양에 정의된 표준 주석을 표시합니다(클래스 수준에서 표준 주석 중 하나가 적용될 수 있음).

표 65.1. Cryostat 유효성 검사를 위한 표준 주석
주석적용 가능설명

@AssertFalse

부울,부울

주석이 달린 요소가 false 인지 확인합니다.

@AssertTrue

부울,부울

주석이 달린 요소가 true 인지 확인합니다.

@DecimalMax(value=, inclusive=)

BigDecimal,BigInteger,CharSequence,byte,short,int,long 및 primitive type 래퍼s

inclusive=false 인 경우 주석이 달린 값이 지정된 최대값보다 작은지 확인합니다. 그렇지 않으면 값이 지정된 최대값보다 작거나 같은지 확인합니다. value 매개변수는 BigDecimal 문자열 형식의 최대값을 지정합니다.

@DecimalMin(value=, inclusive=)

BigDecimal,BigInteger,CharSequence,byte,short,int,long 및 primitive type 래퍼s

inclusive=false 인 경우 주석이 달린 값이 지정된 최소값보다 큰지 확인합니다. 그렇지 않으면 값이 지정된 최소값보다 크거나 같은지 확인합니다. value 매개변수는 BigDecimal 문자열 형식의 최소값을 지정합니다.

@Digits(integer=, fraction=)

BigDecimal,BigInteger,CharSequence,byte,short,int,long 및 primitive type 래퍼s

주석이 있는 값이 정수 숫자와 분수 소수가 있는 숫자인지 확인합니다.

@Future

java.util.Date, java.util.Calendar

주석이 달린 날짜가 나중에 있는지 확인합니다.

@Max(value=)

BigDecimal,BigInteger,CharSequence,byte,short,int,long 및 primitive type 래퍼s

주석이 지정된 최대값보다 작거나 같은지 확인합니다.

@Min(value=)

BigDecimal,BigInteger,CharSequence,byte,short,int,long 및 primitive type 래퍼s

주석이 지정된 최소값보다 크거나 같은지 확인합니다.

@NotNull

모든 유형

주석이 달린 값이 null 이 아닌지 확인합니다.

@Null

모든 유형

주석이 달린 값이 null 인지 확인합니다.

@Past

java.util.Date, java.util.Calendar

주석이 지정된 날짜가 과거인지 확인합니다.

@Pattern(regex=, flag=)

CharSequence

지정된 플래그가 일치하도록 주석이 달린 문자열이 정규식 regex 와 일치하는지 확인합니다.

@Size(min=, max=)

CharSequence,컬렉션, 및 배열

주석이 있는 컬렉션, 맵 또는 배열의 크기가 minmax (포함) 사이에 있는지 확인합니다.

@Valid

primitive가 아닌 유형

주석이 있는 오브젝트에서 재귀적으로 검증을 수행합니다. 개체가 컬렉션 또는 배열인 경우 요소를 재귀적으로 검증합니다. 오브젝트가 맵이면 값 요소의 유효성이 재귀적으로 검증됩니다.

65.2.3. 사용자 정의 주석

65.2.3.1. Hibernate에서 사용자 정의 제약 조건 정의

8080 검증 API를 사용하여 고유한 사용자 지정 제한 조건 주석을 정의할 수 있습니다. Hibernate 검증기 구현에서 이 작업을 수행하는 방법에 대한 자세한 내용은 Hibernate Validator 참조 가이드의 사용자 지정 제한 조건 생성 장을 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.