인프런 커뮤니티 질문&답변
Http request data의 검증과 컨트롤러에서 엔티티 객체 생성
작성
·
390
0
영한님 안녕하세요
현재 강의 queryDSL까지 듣고 요즘 개인프로젝트 진행중입니다.
진행하면서 생긴 궁금증에 대해 여쭤보려고 합니다.
http request가 오는데, 특정 값의 범위에 대한 validating은 어느 계층에서 하면 되나요?
예로들어서 회원가입 기능을 만드는데 비밀번호에 대소문자 특수기호가 있어야합니다.
그러면 비밀번호의 값 validating은 Service계층에서 하는게 맞을까요?
제가 생각하는 controller 계층은 HTTP request를 받고 핵심 비즈니스 로직에게 dto를 던져주고 service 계층으로부터 받은 결과를 적당한 http status code, header, body를 통해서 클라이언트에게 전달하는 역할이라고 생각합니다. 이 계층은 HTTP 요청을 받고 전달하는게 주된 역할이라고 생각합니다.
만약, controller에서 검증 하게된다면 회원가입 API가 추가될때마다 controller에 매번 검증 로직을 넣어야하는데 Service에 넣으면 그럴필요가 없다고 생각합니다.
그래서 Service계층에서 검증하는게 맞다고 생각하는데 적절한 논리인가요?
Controller 계층에서 엔티티 객체 생성? or dto를 전달하여 service에서 생성?
Controller에서 엔티티를 생성하고 service계층으로 넘기면 dto를 전달할 필요가 없어서 좋고
dto를 전달하면 controller가 비즈니스로직에 관여하지 않아서 좀더 controller의 역할이라고 생각이 듭니다. (하지만 service의 파라미터도 dto로 의존하게 되어 다른 controller에서 호출할 때 같은 service의 함수를 이용할 수 없게 된다고 생각합니다)
여기서 주로 영한님은 어느 방법을 이용하시나요? (강의에서는 전자의 방법을 자주 이용하시는 것 같은데)
답변 1
0
안녕하세요. 김선도님, 공식 서포터즈 OMG입니다.
두 가지 질문을 주셨네요, 각각에 대해 영한님의 설명 링크 첨부합니다.
읽어보시면 많은 도움이 되리라 생각합니다.
1) http request가 오는데, 특정 값의 범위에 대한 validating은 어느 계층에서 하면 되나요?
Update 할 때 조건검사(price >= 0) 는 어디서 하는게 좋은 방법일까요? - 인프런 | 질문 & 답변 (inflearn.com)
2) Controller 계층에서 엔티티 객체 생성? or dto를 전달하여 service에서 생성?
UI 계층에서 Entity Object 생성 질문 - 인프런 | 질문 & 답변 (inflearn.com)
감사합니다.





