진짜 개발자
본문 바로가기

Application Knowhow/Server

ApplicationKnowhow/Server - 사용자 입력 값 검증방법과 노하우

728x90
검증

서버를 개발하며 그 동안 값 검증을 하면서 의문이 드는 점과, 노하우라면 노하우라 할 수 있는 얕은 지식을 공유 하려고 합니다.

 

 

 

1. Front-end에서 값 검증을 해서 넘겨주는데 Back-end에서도 해야하나요?

A. 둘다 해야합니다.

프론트에서 하는 검증은 사용자의 경험을 위해서 해야하며, 백엔드에서는 프론트에서 전달받은 값이 중간에 변형될 우려가 있어 해야합니다.

 

 

 

2. 값 검증을 어느 계층에서 수행해야 하나요?

A. 값이 처음 들어오는 곳에서 해야합니다.

값 검증은, 데이터가 처음 들어오는 곳에서 한번 수행합니다. Layered Architecture를 예로 들자면, 사용자가 값을 입력하는 Presentation 계층에서 값 검증을 수행합니다.


추가적으로, Repository에서 가져온 Entity의 값 검증은, 값을 가져온 계층 (보통의 경우 Application 계층)에서 수행합니다.


 

Why?

값 검증을, 처음 입력이 들어오는 곳 이외에서 한다면, 값 검증을 반복적으로 수행하게 될것이며 이는 코드가 중복되게 만듭니다.

 

 

 

3. 엔티티에서 값 검증을 한다면?

A. 특별한 경우가 아니라면 엔티티에서 값검증을 하면 안됩니다.

 

이유1. 도메인 계층의 엔티티는, 어플리케이션 계층의 여러 서비스들에 의해 사용이되는 것.

예를 들어, 회원을 어린이, 성인에 따라 구분하고 혜택이 별도로 주어지는 어플리케이션이 있다고 생각해봅니다.

 

회원가입시, 어린이로 회원가입을 한다면, 나이가 19세 미만 이어야하며, 성인의 경우, 19세 이상이어야 한다면, 이들은 회원가입시 별도의 조건을 통해 검증과정을 거쳐야합니다. 하지만 entity에 검증 코드를 부여하는 경우, 이들 모두를 하나의 조건으로 검증하게 됩니다.

 

 

 

이유2. 도메인 계층에는 도메인 로직만이 존재해야함

도메인 계층에는 도메인 로직만이 존재해야하는데, 검증 로직이 포함됨으로써, 가독성이 낮아질 수 밖에 없습니다.