[Golang] Struct 필드 유효성 검사(validator)

반응형

Struct 필드의 유효성을 검증해보자.

유효성 검사를 하는 함수를 따로 구현해서 할 수도 있지만 validator 패키지를 이용해서 할 수 있다. 

validator 패키지는 gin 웹 프레임워크에서도 사용하는 패키지이다.

 

 

기본적으로 태그를 이용해서 사용한다.

type User struct {
	FirstName      string `validate:"required"`
	LastName       string `validate:"required"`
	Age            uint8  `validate:"gte=0,lte=130"`
	Email          string `validate:"required,email"`
	FavouriteColor string `validate:"iscolor"`
}

required 에 해당하는 필드는 반드시 존재해야 하는 필드이다.

gte=0,lte=130 같이 값의 범위를 지정할 수 있다. 해당 필드의 값은 0보다 크거나 같고 130보다 작거나 같아야 한다.

 

예제코드에서 사용한 태그 이외에도 정말 많은 태그들이 존재한다.

더 자세한 태그에 대한 내용은 아래 링크에서 확인해 볼 수 있다.

 

 

 

이제 해당 struct 의 유효성을 검증해보자.

유효성 검사는 아래와 같이 validator의 Struct 메서드를 이용해서 할 수 있다.

user := &User{
LastName:       "Smith",
Age:            135,
Email:          "Badger.Smith@gmail.com",
FavouriteColor: "#000-",
}


validate := validator.New()
err := validate.Struct(user)
if err != nil {
// 유효하지 않음
}

 

 

위 코드를 실행시 required 로 지정한 FirstName 필드 값이 없으므로 다음과 같은 에러가 발생한다.

'User.FirstName' Error:Field validation for 'FirstName' failed on the 'required' tag