๋ฐ๋ผํ๋ฉฐ ๋ฐฐ์ฐ๋ Nest JS #3
โ๏ธ Today I Learned
-
์ธํ๋ฐ์ ๋ฐ๋ผํ๋ฉฐ ๋ฐฐ์ฐ๋ NestJS๋ฅผ ๋ค์ผ๋ฉฐ ๋ฐฐ์ด์ ์ ๋จ๊ธฐ๊ณ ๊ธฐ๋กํด๋ณด๋ ค๊ณ ํ๋ค.
-
Node.js์ ํ๋ ์์ํฌ์ธ Nest JS๋ฅผ ํ์ตํ๋ฉฐ ์ดํดํ์ ์ ๊ธฐ๋กํ๋ฉฐ ๋ ๋์๊ฐ ๊ถ๊ธํ ๋ถ๋ถ์ ๋ํด์๋ ์ฐพ์๋ณด๋ฉฐ ์ค์ค๋ก ํ์ตํ ์ ์ ๋ํด์๋ ๊ธฐ๋ก์ผ๋ก ๋จ๊ฒจ๋ณด๊ธฐ ์ํด ํฌ์คํ ์ ๋จ๊ธด๋ค.
1. NestJS ๋ชจ๋
-
๋ชจ๋์ @Module () ๋ฐ์ฝ๋ ์ดํฐ(@)๋ก ์ฃผ์์ด ๋ฌ๋ฆฐ ํด๋์ค์ด๋ค.
-
@Module () ๋ฐ์ฝ๋ ์ดํฐ๋ Nest๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ์ฌ์ฉํ๋ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ค.
-
๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์๋ ํ๋ ์ด์์ ๋ชจ๋(์ต์ ๋ฃจํธ ๋ชจ๋)์ด ์์ผ๋ฉฐ, ๊ทธ ์ค ๋ฃจํธ ๋ชจ๋์ Nest๊ฐ ์ฌ์ฉํ๋ ์์์ ์ด๋ค.
-
๋ชจ๋์ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋ ๊ธฐ๋ฅ ์งํฉ์ผ๋ก์จ ํ ์์๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค. (๊ธฐ๋ฅ๋ณ๋ก ๋ง๋ ๋ค. โ ex. ์ ์ ๋ชจ๋, ์ฃผ๋ฌธ ๋ชจ๋, ์ฑํ ๋ชจ๋ ๋ฑ๋ฑ)
-
๊ฐ์ ๊ธฐ๋ฅ์ ํด๋นํ๋ ๊ฒ๋ค์ ํ๋์ ๋ชจ๋ ํด๋์์ ๋ฃ์ด์ ์ฌ์ฉํ๋ค. (ex. userController, userService, userEntity โ ๋ชจ๋ ๊ฐ์ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ userModule ์์ ๋ฃ์ด ๊ด๋ฆฌํ๋ค.)
-
๋ชจ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธ ํค ํจํด ์ด๋ฏ๋ก ์ฌ๋ฌ ๋ชจ๋๊ฐ์ ์ฝ๊ฒ ๊ณต๊ธ์์ ๋์ผํ ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ ์ ์๋ค.
์ฑ๊ธ ํค ํจํด?
๊ฐ์ฒด์ ์ธ์คํด์ค๊ฐ ์ค์ง 1๊ฐ๋ง ์์ฑ๋๋ ํจํด์ ์๋ฏธํ๋ค.
์ธ์คํด์ค๊ฐ ์ค์ง ํ ๊ฐ๋ก๋ง ๊ฐ์ ธ๊ฐ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ์ ๋ฆฌํ๋ฉฐ ๋ค๋ฅธ ํด๋์ค ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ์ฝ๋ค๋ ์ฅ์ ์ด ์๋ค.
2. NestJS ์ปจํธ๋กค๋ฌ
-
์ปจํธ๋กค๋ฌ๋ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ค์ด์ค๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ํด๋ผ์ด์ธํธ๋ก ์๋ต์ ๋ฐํํ๋ค.
-
์ปจํธ๋กค๋ฌ๋ @Controller ๋ฐ์ฝ๋ ์ดํฐ๋ก ํด๋์ค๋ฅผ ๋ฐ์ฝ๋ ์ด์ ํ์ฌ ์ ์๋๋ค.
@Controller('/boards') export class BoardsController {}
๋ฐ์ฝ๋ ์ดํฐ๋ ์ธ์๋ฅผ Controller์ ์ํด์ ์ฒ๋ฆฌ๋๋ โ๊ฒฝ๋กโ๋ก ๋ฐ๋๋ค.
2-1. ํธ๋ค๋ฌ๋?
-
ํธ๋ค๋ฌ๋
@Get
,@Post
,@Delete
๋ฑ ๋ฐ์ฝ๋ ์ดํฐ๋ก ์ฅ์ ๋ ์ปจํธ๋กค๋ฌ ํด๋์ค ๋ด์ ๋จ์ํ ๋ฉ์๋์ด๋ค.@Controller('/boards') export class BoardsController { @Get() getBoards(): string { return 'This action returns all boards'; } }
-
์ฆ, ๋ธ๋ผ์ฐ์ ์์ ๋ค์ด์จ ์์ฒญ์ ์ปจํธ๋กค๋ฌ์์ ์๋ง์ ์์ฒญ ๊ฒฝ๋ก(์๋ํฌ์ธํธ)๋ก ๋ถ๊ธฐํด์ฃผ๋ฉฐ ํด๋น ๋ถ๊ธฐ๋ก ๋ค์ด์จ ์์ฒญ์ ์๋ง์ ํ ์ผ(์์ฒญ ๋ฉ์๋)์ ํธ๋ค๋ฌ์์ ์ฒ๋ฆฌ๊ฐ ๋๋ ๊ตฌ์กฐ์ด๋ค.
3. NestJS ํ๋ก๋ฐ์ด๋๋?
-
ํ๋ก๋ฐ์ด๋๋ NestJS์ ๊ธฐ๋ณธ ๊ฐ๋ ์ด๋ค.
๋๋ถ๋ถ์ ๊ธฐ๋ณธ NestJS ํด๋์ค๋ ์๋น์ค, ๋ฆฌํฌ์งํ ๋ฆฌ, ํฉํ ๋ฆฌ, ํฌํผ๋ฑ ํ๋ก๋ฐ์ด๋๋ก ์ทจ๊ธ๋ ์ ์๋ค.
-
ํ๋ก๋ฐ์ด๋์ ์ฃผ์ ์์ด๋์ด๋ ์ข ์์ฑ์ผ๋ก ์ฃผ์ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ์ฆ, ๊ฐ์ฒด๋ ์๋ก ๋ค์ํ ๊ด๊ณ๋ฅผ ๋ง๋ค์ ์์ผ๋ฉฐ ๊ฐ์ฒด์ ์ธ์คํด์ค๋ฅผ โ์ฐ๊ฒฐโํ๋ ๊ธฐ๋ฅ์ ๋๋ถ๋ถ Nest ๋ฐํ์ ์์คํ ์ ์์๋ ์ ์๋ค.
-
์๋ฅผ ๋ค๋ฉด ์ปจํธ๋กค๋ฌ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋ฌด์ํ ๋ง์ ๊ธฐ๋ฅ์ ์ํํ๋ฉฐ ๊ทธ๋ฅผ ์ํํ๊ธฐ ์ํด ๋ง์ ๊ฒ๋ค์ ํ์๋ก ํ๋ค.
ํ์ง๋ง ํ์ํ ๋ชจ๋ ๊ฒ๋ค์ ์ปจํธ๋กค๋ฌ์์ ์ฒ๋ฆฌํ๊ธฐ์ ๋๋ฌด ๋ฐฉ๋ํ๋ค.
-
๋ฐ๋ผ์ ๊ธฐ๋ฅ๋ณ๋ก ์๋น์ค, ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฑ์ ํตํด์ ์ปจํธ๋กค๋ฌ์ ํด๋นํ๋ ๊ธฐ๋ฅ์ ๋ฃ์ด(์ข ์์ฑ์ ์ฃผ์ ํ๋ค)์ฃผ๋ ๊ฐ๋ ์ ํตํ์ด ํ๋ก๋ฐ์ด๋๋ผ ์ผ์ปซ๋๋ค.
4. NestJS ์๋น์ค๋?
-
์๋น์ค๋ ์ํํธ์จ์ด ๊ฐ๋ฐ๋ด์ ๊ณตํต ๊ฐ๋ ์ด๋ฉฐ, NestJS๋ JavaScript์์๋ง ์ฐ์ด๋ ๊ฐ๋ ์ ์๋๋ค.
-
์๋น์ค๋ @Injectable ๋ฐ์ฝ๋ ์ดํฐ๋ก ๊ฐ์ธ์ ธ์ ๋ชจ๋์ ์ ๊ณต๋๋ฉฐ, ์ด ์๋น์ค ์ธ์คํด์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ์ฌ์ฉ๋ ์ ์๋ค.
์๋น์ค๋ ์ปจํธ๋กค๋ฌ์์ ๋ฐ์ดํฐ์ ์ ํจ์ฑ ์ฒดํฌ๋ฅผ ํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค CRUD๊ฐ ์ด๋ค์ง๋ ๋ถ๋ถ๋ค์ ์ฒ๋ฆฌํ๋ค.
-
NestJS CLI๋ก ์์ฑํ ๊ธฐ๋ณธ ํ๋ก์ ํธ๋ฅผ ์๋ก ๋ค๋ฉด
'Hello World!'
๋ฌธ์์ด์ ๋ฆฌํดํด์ฃผ๋ ์๋์ ๋ถ๋ถ์ด ๋ํ์ ์ธ ์๋น์ค๋ผ ๋ณผ ์ ์๋ค.@Injectable() export class AppService { getHello(): string { return 'Hello World!'; } }
๐ค Understanding
-
๋ฐ๋ผํ๋ฉฐ ๋ฐฐ์ฐ๋ Nest JS #2์์๋ NestJS ๋ก์ง ํ๋ฆ์ ๋ํด์ ํ์ตํ๋ค๋ฉด ์ค๋์ ์ ๋ฐ์ ์ธ ๋ถ๋ถ๋ง๋ค ์ด๋ ํ ๊ธฐ๋ฅ์ ์ํํ๋ฉฐ ๊ฐ ๋ถ๋ถ๋ค์ด ์ด๋ป๊ฒ ์ํธ ์ฐ๊ฒฐ๋์ด ๋์๋๋์ง์ ๋ํ ๋ํ ์ผํ ๋ถ๋ถ์ ์ฐ์ ์์๋ณด์๋ค.
-
๊ฐ์ข ์์ ๋ฅผ ํตํด์ ์ค์ ๋ก ์ฝ๋๋ฅผ ์ง๋ด์ผ ์ฌ์ค ์กฐ๊ธ ๋ ์๋ฟ์ ๋ฏ ํ๋ค.
-
์ฃผ๋ง์ ํตํด์ CRUD ๊ด๋ จํด์ ์ค์ ๋ก ์ฝ๋๋ก ๊ตฌํํด๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ์ผ ํ ๋ฏํ๋ค.