inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

커머스 서비스로 배우는 NestJS 실전 개발 (w. Prisma, Docker, Redis, Kafka)

dto 관련 질문있습니다.

해결된 질문

132

dosaem

작성한 질문수 1

0

order.service 계층에서

import { CreateRequestOrderDto } from 'src/order/presentation/dto/create.order.dto';


presentation 계층의 dto를 참조하는데 이유가 있을까요??

궁금해서 질문드립니다.

docker kafka redis nestjs prisma

답변 2

0

김빌 (Bill Kim)

설계관점에서 바라보면, controller 단의 dto 와 service 단의 dto(domain) 을 공유자원으로 사용할 것인가? 분리해서 사용할 것인가를 고민해볼 수 있습니다.

어떤게 좋다? 라고 말하기에는 양측 전부 장단이 존재하여, 원하는 방식으로 사용하면 됩니다.

도메인 서비스 단에서 도메인 dto 로 return 만 시키고, controller layer 에서 static 을 이용하여 controller dto 로 변환하는 부분도 흔하게 사용되는 방식입니다. 이렇게 하게되면 비지니스 영역에서는 controller 의 dto 를 직접참조할 일이 없어지게 됩니다.

(프로젝트 규모가 클 경우, 분리하는게 더 이익임)

1

dosaem

넵 답변감사합니다.

결국은 프로젝트 규모와 상황에 따라 제가 판단하는게 맞겠네요 ㅎㅎ

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

dosaem님께서 질문하신 order.service 계층에서 presentation 계층의 DTO를 참조하는 이유에 대해 설명드리겠습니다.

DTO(Data Transfer Object)는 계층 간의 데이터를 효율적으로 전송하기 위한 객체입니다. order.service 계층은 비즈니스 로직을 담당하며, 클라이언트로부터 데이터를 받아와 내부적으로 처리하기 위해 이 DTO를 사용할 수 있습니다. 위와 같은 방식으로 presentation 계층의 DTO를 참조하는 것은, 클라이언트로부터 받은 요청 데이터를 보다 쉽게 검증하고 해당 데이터를 이용해 비즈니스 로직을 수행하기 위한 방법입니다.

특히, 클린 아키텍처나 여러 레이어드 구조를 따르는 애플리케이션에서는 계층 간 데이터 전송에 대한 통일성을 유지하기 위해 각 계층의 DTO를 정의하고 사용합니다. 이처럼 presentation 계층의 DTO를 order.service에서 활용하는 것은 이러한 구조상의 일관성을 유지하면서도 데이터 전송 및 검증의 편리함을 제공하기 때문입니다.

아래의 링크에서 유사한 주제에 대한 토론을 확인하실 수 있습니다:
- NestJS와 DTO 사용 사례

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

워드프레스 502 Bad Gateway 오류

0

15

2

5장부터는 미션 상세 내용이 없는데 어떻게 작성해야되나요?

0

10

1

aws 관련 질문드립니다.

1

15

3

제미나이 이미지생성 노드를사용했고 n8n에서 생성된 이미지를 해당 서버로 자동 업로드할때 value에 값을 어떤걸 넣어줘야 할까요>?

0

15

1

제미나이 이미지 생성 대체

0

36

2

kubectl exec 에러가 발생해서 문의드립니다.

0

23

2

실습 환경 : 파이썬 3.10 관련 문의

0

38

2

3,4장 이후 미션 제출 질문

0

42

2

퍼블릭시티를 ai agent 제미나이로 대채

0

49

2

섹션2-18

0

37

2

윈도우에서 Node js를 설치하고 싶어요

0

34

0

Blog-Content-Writer에서 오류가 발생합니다.

0

40

2

섹션2-14 perplexity

0

40

2

Int 값들 null 처리

0

27

1

db table 관련질문

0

30

1

현업에서 prisma relationMode는 사용안하나요?

0

34

1

FK 현업에서 실제 사용안하시나요

0

115

1

PrismaClientInitializationError: Prisma Client could not locate the Query Engine for runtime "linux-arm64-openssl-3.0.x". 에러

0

278

2

Module '"@prisma/client"' has no exported member 'cart'. 에러

0

196

3

모듈 래포지토리 등록에 관한 질문입니다.

0

177

2

timezone 관련 질문

0

306

2

섹션4 -> 5 넘어가는시점 강의 영상이 중간에 빠진건아니신지..?

2

254

2

강의 코드를 확인할 수 있는 깃허브 URL이 있을지 궁금합니다!

2

317

1

섹션3과 섹션4 같은 영상으로 확인됩니다

0

166

1