프레젠테이션 계층(컨트롤러)
아키텍쳐 패턴의 3계층 중에서 프레젠테이션 계층에 속하는 컨트롤러는 클라이언트의 요청을 가장먼저 만나는 계층입니다. |
- 컨트롤러의 역활
클라이언트 요청 수신 | ▶ | 요청 속 데이터 검증 | ▶ | 최종 결과 반환(Response) |
클라이언트의 요청을 받은 후 요청 속 사용자 입력 검증등을 한 후 다음 계층으로 보냅니다.
하위 계층에서 최종 결과를 받아서 클라이언트에게 결과반환(Response)의 역활을 합니다.
그리고 전역 오류 처리등의 예외 처리를 담당함으로서 에러처리 미들웨어를 사용하는 곳입니다.
게시글 작성 컨트롤러가로 가정했을 경우
src/controllers 경로에 posts.controller.js <<파일을 만들고
예시 사진 처럼 api를 작성하며 트라이 케치, 에러처리 미들웨어 등을 사용하며 요청을 처리하는 비즈니스 로직은
이곳에 적성하지 않고 단순히 요청을 받아서 검증하고 로직을 수행하는 다른 계층으로 요청을 넘기는 역활만을 수행합니다.
서비스 계층 (비즈니스 계층이라고도 부름)
핵심적인 비즈니스로직을 수행하는 계층으로 위의 프레젠테이션 계층에서 요청을 전달받아서 실제로 그 요청을 수행라는 로직을 구현하는 계층입니다. |
- 데이터를 파싱하거나 정렬하는 등의 핵심적인 "기능"을 구현
게시글 관련 기능을 하는 기능을 만든다는 예시를 들었을 경우
src/services 경로에 posts.service.js등으로 파일을 만들고 비즈니스 로직을 작성
게시글 조회 요청이 들어왔을 경우 위 예시사진처럼 조회결과를 정렬하거나
특정 데이터를 제외한 결과를 반환하는 작업을 수행하는등 필요한 핵심기능들을 수행하는 역활을 합니다
저장소 계층(Data Access Layer)
데이터베이스와 관련된 작업만을 처리하는 계층으로 데이터를 생성,조회,수정,삭제등의 CRUD기능을 구현하는곳 입니다. |
저장소계층(데이터 엑세스 계층)을 사용할 경우
- 데이터의 저장방법을 더욱 쉽게 변경 가능
- 테스트코드 작성시 가짜저장소를 제공하기 쉬움
- 유닛 단위로 코드를 테스트 할 때 저장소 계층만 제외시키면 되기때문
저장소 계층에서 로우쿼리를 사용하던 파인드올을 사용하던간에 경과만 정상으로 도출되면
다른 코드들에게 영향을 주지 않음
'Node.js' 카테고리의 다른 글
HTTP, TCP, 그리고 웹소켓 (0) | 2024.09.30 |
---|---|
게임 서버개발자, 실무에서 게임 개발이 시작되는 과정 (0) | 2024.09.27 |
프리즈마(Prisma) (1) | 2024.09.11 |
미들웨어(Express.js) (0) | 2024.09.05 |
[Node.js + MongoDB + ejs]글 작성기능 만들기(post요청,insertOne,예외 처리) (2) | 2024.07.27 |