# validator

40개의 포스트
post-thumbnail

RSC(React Server Component)와 RHF(React Hook Form), Zod 소개

👋 인사 안녕하세요~ 고영이에요. 또 오랜만에 포스트를 쓰네요. 자주 써야하는데 블로그에 통 관심을 못가졌네요. 바쁘기도하고 그럴싸하게 쓸것들을 찾느라 시간이 훌쩍 지났어요. 오늘은 짧게 글을 작성해볼게요~ 오늘 소개할 것? RSC와 RHF, Zod를 소개할까해요. RSC는 리액트의 새로운 프레임워크인 리액트 서버 컴포넌트를 말해요. RSC 링크: http://localhost:3000/signup?token=71fcb274e0547a99bddc9b67236466d17ea7075a0bfa5ef15b6b464d75543305 RSC data fetch 링크: https://nextjs.org/docs/app/building-your-application/data-fetching/fetching-caching-and-revalidating RHF는 입력에 사용되는 form, input, select 등을 접근성을 고려하여 상태를 관리할 수 있게 해주는 라

2023년 8월 7일
·
0개의 댓글
·
post-thumbnail

Spring의 Validator 인터페이스를 사용하여 유효성 검사

바로 앞에 글에서 커스텀 에노테이션을 이용해서 유효성검증을 하였습니다. 하지만 코드의 구조와 코드를 완전히 바꿔야되는 요구사항이 발생했습니다. orderChannel에 따라서 필드의 유효성 검증의 유무 <- 이것이 바로 지금 글을 작성할 Spring의 Validator 인터페이스를 사용하여 유효성 검사를 쓰는 이유입니다. 기존의 커스텀에노테이션은 문제없이 분기처리를 할 수 있지만 @NotEmpty , @NotNull 같은 스프링 제공 Annotation의 분기처리는? 제가 만난 문제는 바로 위의 제목처럼 스프링이 제공하는 validation에 대한 분기처리때문이었습니다. 예를들어 주문 채널이 "배민"일때만 저러한 null check를 하고싶다면? 주문 채널이 "요기요"일때는 null check를 하고싶지 않다면 ? 추가적인 커스텀 에노테이션을 만든다는 생각도 했지만 다른사람이 이렇게 계속해서 많아지는 커스텀 에노테이션을 보고 이해하기에 가독이 높은 코드라고 생각

2023년 7월 18일
·
2개의 댓글
·
post-thumbnail

[blazor] blazor EditForm 사용 하여 Annotation 설정 및 유효성 검사

강의 제목 : 9. BlazorForm_EditForm 컴포넌트를 사용하여 폼 작성 및 폼 유효성 검사 진행하기 model 생성 > [Required (ErrorMessage = "이름을 입력 해 주세요.")] 필수로 값을 할당하도록 지정. errormessage는 해당 유효성을 위반 할때 출력 할 메시지 [StringLength(10, ErrorMessage ="10자 이내로 입력 해 주세요.")] string의 최대 자리수 설정. errormessage는 해당 유효성을 위반 할때 출력 할 메시지 ExampleModel.cs 네비게이션 메뉴 설정 NavMenu.razor 페이지 생성 > EditForm blazor에서 제공하는 editForm Model => editForm에서 사용할 모델 OnValidSubmit => submit이벤트시 실행할 메소드. DataAnnotationsValid

2023년 6월 25일
·
0개의 댓글
·
post-thumbnail

SPRING PROJECT_03 :: Validator

유효성검사 유효성검사를 하는 방법은 다양하다. 자바스크립트/html5를 통해 프론트에서 바로 유효성검사를 하고 보내는것과 백앤드에서 컨트롤러를 통해 유효성검사를 하고 에러를 발생시킨뒤 url맵핑하는 방법이 있다. -> validator Validator란? 유효성검사를 위한 인터페이스 작성법 스프링xml파일에 다음의 코드를 등록. root-context.xml 등록을 해주면 validator가 발생시키는 에러에 해당하는 메세지를 view에 띄워줄 수 있다. 메세지소스 만들어주기. src/main/java/resources/ 에 message라는 폴더를 만든후 label.properties로 파일을 만들어준다.(위에 스프링 등록해줄때 message.label

2023년 4월 30일
·
0개의 댓글
·

NodeJS: validator --> ORM

Code Controller Service Repository Data Type DTO Entity DTO와 Entity는 서로 유도(Derived) 관계일 수 있다. NodeJS ORMs (https://www.eversql.com/best-orm-for-node-js/) 각 ORM의 model 정의 방법 Sequelize

2023년 3월 31일
·
0개의 댓글
·

V2.8 WebDataBinder 와 Validated

✏️ Controller 전체에 검증 로직 작동시키기 📍 WebDataBinder (검증기) 적용 @InitBinder 해당 Controller 로 url 이 매핑되면 어노테이션이 선언된 method 가 실행된다. Spring 내부적으로 생성된 WebDataBinder 를 매개변수로 받아서 Controller 의 매핑 method 가 실행되기전 검증을 수행 해준다. 📍 Validated 적용 🔗 Validator 객체에 @Validated 어노테이션을 붙여주면 V2.7 에서 사용한 ItemValidator.validate 를 호출해주지 않아도 된다. 위에서 생성한 @InitBinder method 에서 ItemValidator.supports 로 검증할 수 있는 객체를 판별하고 검증

2023년 3월 27일
·
0개의 댓글
·

V2.7 Validator 분리

✏️ V2 의 문제점 지금까지 구현한 V2 의 method 는 비지니스 로직보다 검증로직의 길이가 더 길어 유지보수성이 매우 떨어진다. ✏️ 검증 로직 분리 검증만 담당하는 별도의 객체를 생성해 Controller 의 검증 로직을 분리시킬 수 있다. @Component 로 Spring Bean 으로 등록 Validator 를 상속받아 상황에 맞게 검증 로직을 완성시켜줄 수 있다. supports validate method 가 객체를 검증할 수 있는지 판단하는 로직 validate 실질적인 검증 로직이 작동되는 method 검증하려는 객체와 BindingResult 을 변수로 받는다. BindingResult 는 error 를 상속받았기 때문에 별도 케스팅 없이 형변환이 가능하다. [🔗 형변환](https

2023년 3월 27일
·
0개의 댓글
·
post-thumbnail

[Kakao Cloud School] 20번째 회고록

Intro 과연 할 수 있을까? 파이널 프로젝트를 시작하면서 기획이나 설계 단계에서 이 정도는 할 수 있겠지 하는 마음으로 욕심을 한껏 부려서 커트라인을 높이게 되었다. 그러다보니 생각보다 개발하고자 하는 범위도 늘어나고 고려해야 할 사항들도 많아졌다. 팀원들과 일일 스프린트를 진행하면서 물론 아이디어를 제안하고 적용하는 것도 중요하지만 짧은 개발일정 내에 산출물을 만들어야 하기 때문에 구현 가능성을 무시할 수는 없어서 중간중간 가지치기를 요청했다. 프로젝트를 통해서 하고자 하는 것과는 방향성이 다른 기능들은 미련없이 쳐낼 수 있었지만 배운대로만 적용해보고 끝내고 싶지는 않아서 필요한 기능들은 그대로 두고 개발을 시작하기로 하였다. 사실, 기획 및 설계 단계에서 내놓은 다양한 기능들에 대해 구현 가능성을 일일이 따져보고 일정을 산출하고 프로잭트의 개발 범위를 결정하는 것이 참으로 어려웠다. 그래서 프로젝트의 개발 일정을 모두 최악의 상황을 염두에 두고 정하게

2023년 3월 19일
·
0개의 댓글
·

Custom Validator

기본적으로 제공되는 validation constraint (@Size, @Length, @Column() 등)이 충분치 않을 수 있다. 그럴 때는 커스텀으로 만들면됨 필드 단위에서 적용하는 constraint 아이디에 영어와 숫자 모두 포함되는지 interface implementation 클래스 단위에서 적용하는 constraint 유저의 비밀번호와 비밀번호 확인 값이 일치하는지 Implementation > 참고: Spring MVC Custom Validation

2023년 3월 3일
·
0개의 댓글
·

검증 - 검증과 에러 메시지

에러 메시지 Spring은 메시지, 국제화 기능을 제공하여 다음의 편의성을 제공했다. 메시지 기능을 이용해 자주 등장하는 메시지를 하드 코딩 하지않고 별도의 파일로 분리하여 수정을 용이하게 했다. 국제화 기능을 이용해 각 국가별로 다른 언어로된 메시지를 전달할 수 있도록 하였다. 그런데, Spring은 이 외에도 에러 메시지 기능을 따로 분리하여 에러 메시지만을 처리하기 위한 기능도 제공한다. 사용법 등록 application.properties에 메시지 파일을 등록하는 부분에 , 기호를 이용해 추가로 errors 파일까지 등록할 수 있게 지원한다. 메시지 기능과 동일하게 에러 메시지 기능 또한 각 국가별로 별도의 메시지를 작성할 수 있다. 파일 작성 Validator의 경우, MessageCodesResolver reject과 rejectValue 메서드 내부에서 에러 메시지의 코드를 생성하는 기능을

2023년 2월 19일
·
0개의 댓글
·

검증 - Validator

Validator란, > 공식 Docs > BindingResult, FieldError, ObjectError를 통해 Controller에서 값을 검증할 수 있지만, 이 경우 Controller의 크기가 너무 커지고 단일 책임 원칙에 위배된다. 그래서 Spring에서는 Validator라는 인터페이스를 통해 별도의 검증용 Spring Bean을 만들 수 있도록 기능을 제공한다. 프로그래머는 Validator 인터페이스를 상속받아 구현체를 만들어 검증 로직을 구현할 수 있다. 그리고 Spring Bean으로 만들어지기 때문에, Controller에서는 해당 구현체를 주입받아 사용할 수 있게 된다. Gradle Validator를 사용하기 위해선 위처럼 `b

2023년 2월 19일
·
0개의 댓글
·

Optional, 정규식 Dto.

정규식 관련 정 규식이 정규식 조건이 다음과 같을 때, 영문(대소문자 모두 가능)만 허용합니다. 워드 사이에 한칸의 공백(스페이스)만 포함 될 수 있습니다. “Cafe Latte” (ㅇ) “Ca fe Latte” (ㅇ) “Cafe Latte” (X) “ Cafe Latte” (X) “ Cafe Latte ” (X) “ Cafe Latte ” (X) 정규식 사용시 "^([a-zA-Z]+)(\\s?[a-zA-Z])*$" 자바가 아니면, "^([a-zA-Z]+)(\s?[a-zA-Z])*$" \슬래시 하나 차이이다.. >자바는 문자열 안에 특수문자 넣으려면 \가 하나 더 필요하다. 슬래시 중간에 \s 할 때, 슬래시 두개냐, 한개냐가 헷갈린다... 자바는 문자열로 특수문자앞에 \를 넣어줘야 되다보니 \\s라고 쓰지만,, [정규식 테스트 사이트](ht

2022년 11월 17일
·
1개의 댓글
·

스프링 부트 유효성 검증 애너테이션

애너테이션 @Email 클라이언트의 요청 데이터에 유효한 이메일 주소가 포함되어 있지 않을 경우 유효성 검증의 실패로 클라이언트의 요청이 거부(reject)됨. 유효한 이메일 주소인지를 검증한다. 유효성 검증에 실패하면 내장된 디폴트 에러 메시지가 콘솔에 출력됨. > import를 javax.validation.constraints.Email로 해야한다. org.hibernate.validator.constraints.Email의 import는 Dprecated되었다. @Valid 메서드의 매개변수 앞에 @Valid애너테이션이 붙으면 객체에 유효성 검증을 적용해준다. @RequestBody JSON 형식의 Request Body를 DTO클래스의 객체로 변환시켜주는 역할을 한다. 이 말의 의미는 클라이언트 쪽에서 전송하는 Request Body가 JSON형식이어야 한다는 의미이다. @Re

2022년 11월 17일
·
1개의 댓글
·

[Spring] Validator 분리, 검증 분리

컨트롤러에서 검증 로직이 차지하는 부분은 매우 크다. 이런 경우 별도의 클래스로 역할을 분리하는 것이 좋다. 그리고 이렇게 분리한 검증 로직을 재사용 할 수도 있다. Validator1 스프링은 검증을 체계적으로 제공하기 위해 다음 인터페이스를 제공한다. 검증기를 직접 불러서 사용한다. supports(){}: 해당 검증기를 지원하는 여부 확인 validate(Object target, Errors errors): 검증 대상 객체와 BindingResult 예시 Validator를 상속받은 ItemValidator 검증을 사용하는 controller Validator2 WebDataBinder를 통해서 사용한다. WebDataBinder는 스프링의 파라미터 바인딩의 역할을 해주고 검증 기능도 내부에 포함한다. 예시 controller에 추가 해당 컨트롤러에만 영향을 준다. 글로벌 설정은 별도로 해야한다. @Vali

2022년 11월 14일
·
0개의 댓글
·
post-thumbnail

BE_[Node] API Architecture & Layered Pattern

1. API Architecture > 요약 코드의 아키텍처(architecture) : 코드의 구조를 더 체계적으로 그리고 효율적으로 구현하는 것. 아키텍쳐 적용의 중요성 : 확장성, 재사용성, 유지 보수 가능성, 가독성, 테스트 가능성 관심사 분리 : 각 코드의 역할을 독립적으로 분리할 필요가 있다. 코드 구조의 중요성 확장성, 재사용성, 유지보수 가능성, 가독성, 테스트 가능성 관심사 분리, Separation Of Concerns 주된 역할과 집중해야할 기능을 분리하여 서로 다른 기능을 하는 파일은 신경을 쓰지 않도록 하는 것 역할에 대한 분리 (ex) 회원가입 시 서버의 역할 분리 전/후 ![](https://velog.velcdn.com/images/scroll0908/post/f9ccf438-ac1a-48f4-9d05-424e186d9469/image.

2022년 11월 11일
·
0개의 댓글
·
post-thumbnail

drag-and-drop_ts-project_2.userInput-Validation

사용자 입력을 검증하기 전에 이상, 이하, 초과, 미만을 영어로 표기하는데 헷갈려서 여기에서 정리한 것을 기반으로 사용자 입력을 검증했다. 사용자 입력에 대한 큰 틀은 아래 그림과 같다. user-input-component 🍀 사용자 입력 1️⃣ 사용자 입력 title: minLength = 5, maxLength = 30 -> 5 10 <= title <= 300` peo

2022년 10월 23일
·
0개의 댓글
·

Validator 인터페이스

스프링 Validation 스프링 프레임워크는 Validation 추상화를 제공 한다. org.springframwork.Validation.Validator는 객체를 검증하기 위한 인터페이스이다. Validator 인터페이스 Validator 인터페이스를 상속한 클래스는 다음 두 메서드를 구현해야 한다. boolean supports(Class clazz) : 매개변수(clazz)로 들어온 클래스가 Validator가 검증 할 수 있는 클래스 인지 판단하는 메서드이다. void validate(Object target, Errors error) : 실제 검증 로직이 이루어지는 메서드이다.

2022년 10월 12일
·
0개의 댓글
·
post-thumbnail

[DRF]serializer 의 field 구현하여 커스텀한 Validator 사용하기

개요 DRF를 사용하면 serializer를 정말 많이 구현하게 된다. 직렬화 뿐만 아니라 유효성 검사, 데이터의 저장 등 객체에 관련하여 정말 많은 일들을 serializer를 통해 다루게 된다. serializer의 수많은 필드들이 이미 DRF에 구현되어있다. serializers의 필드들은 URL, Email, 수의 값 등 각 필드에 사용자가 원하는 포맷의 데이터인지 validation을 통해 검증하고, 알맞는 값이 아닌 경우에는 ValidationError를 발생시켜준다. 나는 User와 관련된 API를 개발하며 입력된 비밀번호가 알맞은 포멧인지 확인하는 검증 과정이 필요하였다. 하지만 회원가입, 회원정보 수정 등의 기능을 구현하며 반복적으로 password의 유효성을 검증하는 코드를

2022년 9월 23일
·
0개의 댓글
·
post-thumbnail

TIL#11

1) > Form 요청은 크게 method와 요청이 들어갈 주소인 action으로 이루어져 있다. >> Form 요청에서 GET 요청은 http protocol을 보낼 때 보통 url의 ?(query) 뒤에 인자를 실어 보낸다. 이를 "querystring 형식의 encoding을 한다."라고 표현한다. >>> header 영역은 key: value의 형식의 header가 여러 줄 있고 body 영역은 POST 요청에만 있다고 한다. POST 요청에서 파일을 업로드 할 수 있는 이유도 여기에 있다. 그러므로 html GET 요청에서 input type에 text가 아닌 file을 설정해줘도 실효성은 없다. >>>> enctype이 강제되는 GET 요청과 달리 POST 요청에서 파일을 업로드할 때는 enctype을 "multipart/form-data"로 명시해준다. 2) > httprequest는 응답 header, 빈 줄, 응답 body영역을 포함하는 요청 패킷을 parsi

2022년 9월 2일
·
0개의 댓글
·
post-thumbnail

유효성검사, 이거 해야하는거 맞아?

면접질문으로 받았던 여러가지 질문 중 사용해보지 못했다. 라고 대답했던 몇가지 중 하나. >유효성 검사를 혹시 해보셨나요? 해보지 못했다, 그런데 계속 지켜보고는 있었다. 나는 npm을 가끔씩 둘러보는 편인데, 사람들이 뭘 많이 쓰는가에 대해서 찾아볼 때가 있다. 그럴 때 보였던 라이브러리중 joi 라는 것이 있었고, 도대체 어떤 역할을 하길래 이렇게 많이 쓰는지에 대한 궁금증이 생겼다. 그 당시에는 유효성 검사를 조금 더 쉽게 도와주는 역할을 하는 라이브러리라고 적혀있는 것을 봤다. 그래도 나는 사용할 엄두가 안났다. 프로젝트 기간은 한계가 있었고, 상당한 분량의 코드가 필요한 것 같아서 도입을 하지 못했다. 도대체 왜 써야하는데? 그리고 현재로

2022년 7월 23일
·
0개의 댓글
·