3-layered-architecture
ํ๋ ์ ํ
์ด์
๊ณ์ธต(Presentation Layer) = Controller /
๐ 3-Layered Architecture์ ํ๋ก์ฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ก์ง์ด ์ํ
1. ํด๋ผ์ด์ธํธ(Client)๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ์์ฒญ(Request)์ ๋ณด๋ ๋๋ค.
2. ์์ฒญ(Request)์ URL์ ์๋ง์ ์ปจํธ๋กค๋ฌ(Controller)๊ฐ ์์ ๋ฐ์ต๋๋ค.
3. ์ปจํธ๋กค๋ฌ(Controller)๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋น์ค(Service)๋ฅผ ํธ์ถํฉ๋๋ค.
4. ์๋น์ค(Service)๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ ์ฅ์(Repository)์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํฉ๋๋ค.
5. ์๋น์ค(Service)๋ ์ ์ฅ์(Repository)์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ์ปจํธ๋กค๋ฌ(Controller)์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํฉ๋๋ค.
6. ์ปจํธ๋กค๋ฌ(Controller)๋ ์๋น์ค(Service)์ ๊ฒฐ๊ณผ๋ฌผ(Response)์ ํด๋ผ์ด์ธํธ(Client)์๊ฒ ์ ๋ฌํด์ค๋๋ค.
1) ํด๋ผ์ด์ธํธ์ ์์ฒญ(Request)๋ฐ๊ธฐ.
2) ์์ฒญ ์ฒ๋ฆฌ : ์๋น์ค์๊ฒ ์์.
3) ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต(Response)์ ๋ฐํ.
ํ๋ ์ ํ
์ด์
๊ณ์ธต(Presentation Layer)์ 3๊ณ์ธต ์ํคํ
์ฒ ํจํด์์ ๊ฐ์ฅ ๋จผ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ(Request)์ ๋ง๋๊ฒ ๋๋ ๊ณ์ธต.
๋ํ์ ์ผ๋ก ์ปจํธ๋กค๋ฌ(Controller)๊ฐ ์ด ์ญํ ์ ๋ด๋น
- ํด๋ผ์ด์ธํธ์ ์์ฒญ(Request)์ ์์ ํฉ๋๋ค.
- ์์ฒญ(Request)์ ๋ค์ด์จ ๋ฐ์ดํฐ ๋ฐ ๋ด์ฉ์ ๊ฒ์ฆํฉ๋๋ค.
- ์๋ฒ์์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํ(Response)ํฉ๋๋ค.
1) ๋น์ฆ๋์ค ๋ก์ง
2) Repository๋ฅผ ํ์ฉํ์ฌ DB์ ์ํธ ์์ฉ
3) Controller ์ ์ ๋ฌํ ๋ฐ์ดํฐ ์๋ต
1) ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ (์ฐ๊ฒฐ, ํด์ , ์์ ๊ด๋ฆฌ) ์ญํ ์ ๋ด๋น.
2) ๋ฐ์ดํฐ๋ฒ ์ด์ค์ CRUD ์์
์ ์ฒ๋ฆฌ.
โโโ package.json
โโโ prisma
โ โโโ schema.prisma
โโโ src
โ โโโ app.js
โ โโโ controllers
โ โ โโโ posts.controller.js
โ โโโ middlewares
โ โ โโโ error-handling.middleware.js
โ โ โโโ log.middleware.js
โ โโโ repositories
โ โ โโโ posts.repository.js
โ โโโ routes
โ โ โโโ index.js
โ โ โโโ posts.router.js
โ โโโ services
โ โ โโโ posts.service.js
โ โโโ utils
โ โโโ prisma
โ โโโ index.js
โโโ yarn.lock