ÄÁÅÙÃ÷»ó¼¼º¸±â

NestJS·Î ¹è¿ì´Â ¹é¿£µå ÇÁ·Î±×·¡¹Ö : ŸÀÔ½ºÅ©¸³Æ® ȯ°æÀÇ Â÷¼¼´ë ¼­¹ö ÇÁ·¹ÀÓ¿öÅ©¸¦ ¸¸³ª´Ù
NestJS·Î ¹è¿ì´Â ¹é¿£µå ÇÁ·Î±×·¡¹Ö : ŸÀÔ½ºÅ©¸³Æ® ȯ°æÀÇ Â÷¼¼´ë ¼­¹ö ÇÁ·¹ÀÓ¿öÅ©¸¦ ¸¸³ª´Ù
  • ÀúÀÚÇÑ¿ëÀç Àú
  • ÃâÆÇ»çÁ¦ÀÌÆà
  • ÃâÆÇÀÏ2023-03-10
  • µî·ÏÀÏ2024-07-15
º¸À¯ 1, ´ëÃâ 0, ¿¹¾à 0, ´©Àû´ëÃâ 1, ´©Àû¿¹¾à 0

Ã¥¼Ò°³

°¡Àå Áøº¸ÇÑ ÇÁ·¹ÀÓ¿öÅ©·Î ¿ì¾ÆÇÏ°Ô ¹é¿£µå ÀÔ¹®Çϱâ

NestJS´Â Express¸¦ ±â¹ÝÀ¸·Î DB, ORM, À¯È¿¼º °Ë»ç µîÀÇ ¶óÀ̺귯¸®¸¦ ³»ÀåÇÑ Â÷¼¼´ë ¹é¿£µå ÇÁ·¹ÀÓ¿öÅ©´Ù. Á¦¾î ¹ÝÀü, ÀÇÁ¸¼º ÁÖÀÔ, AOP µî °´Ã¼ ÁöÇâ °³³äÀ» µµÀÔÇß°í ŸÀÔ½ºÅ©¸³Æ®·Î ¸ðµâ/ÄÄÆ÷³ÍÆ® ±â¹ÝÀÇ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ÀÖ´Ù. ÀÌ Ã¥Àº ÀúÀÚ°¡ ¸ðµÎ½ÎÀο¡ ¸ö´ãÀ¸¸ç ÀÍÈù ³ëÇÏ¿ì¿Í ÀλçÀÌÆ®¸¦ ¹ÙÅÁÀ¸·Î NestJS¸¦ È°¿ëÇØ È¸¿ø °¡ÀÔ, À̸ÞÀÏ ÀÎÁõ, ·Î±×ÀÎ, ȸ¿ø Á¤º¸ Á¶È¸ ±â´ÉÀ» °®Ãá REST API À¯Àú ¼­ºñ½º¸¦ ¸¸µé¾îº»´Ù. ÇÁ·ÎÁ§Æ®¿¡ Á¡Â÷ »ìÀ» ºÙ¿©³ª°¡¸ç ¹é¿£µå °³¹ß¿¡ ÇÊ¿äÇÑ È¯°æ º¯¼ö ¼³Á¤, ¿äû À¯È¿¼º °Ë»ç, ÀÎÁõ(JWT), ·Î±ë, Çコ üũ, CQRS, Ŭ¸° ¾ÆÅ°ÅØó, ´ÜÀ§ Å×½ºÆ® µî Áö½Ä°ú ±â¼úÀ» Á¦´ë·Î ÀÍÈú ¼ö ÀÖ°Ô ÁýÇÊÇß´Ù.

ÀúÀÚ¼Ò°³

¿À·£ ±â°£ ÈÞ´ëÆù¿¡ Å¾ÀçµÇ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µé´Ù ÇöÀç´Â ¸ðµÎ½ÎÀο¡¼­ ¹é¿£µå ¿£Áö´Ï¾î·Î È°µ¿ ÁßÀÌ´Ù. ¸ðÅä´Â ÀϽſìÀϽÅ(ìíãæéÑìíãæ)ÀÌ°í, ¿µÈ­¿Í ±³¾ç °úÇР¼­ÀûÀ» ÁÁ¾ÆÇÑ´Ù. Àú¼­·Î´Â ¡¶NestJS·Î ¹è¿ì´Â ¹é¿£µå ÇÁ·Î±×·¡¹Ö¡·(2022, Á¦ÀÌÆà)ÀÌ ÀÖ´Ù.

¸ñÂ÷

º£Å¸¸®´õ Èıâ x ¸Ó¸®¸» xii À̠å¿¡ ´ëÇÏ¿© xiii

CHAPTER 1 Hello NestJS 1

1.1 NestJSÀÇ ÀåÁ¡ 1
1.2 Express°¡ ÁÁÀ»±î, NestJS°¡ ÁÁÀ»±î 2
1.3 NestJS ¼³Ä¡ 6
__1.3.1 Node.js ¼³Ä¡ 6 / 1.3.2 NestJS ÇÁ·ÎÁ§Æ® »ý¼º 7
1.4 Ã¥¿¡¼­ ¸¸µé ¾ÖÇø®ÄÉÀ̼Ç: À¯Àú ¼­ºñ½º 9

CHAPTER 2 À¥ °³¹ß ±âÃÊ Áö½Ä 13

2.1 À¥ ÇÁ·¹ÀÓ¿öÅ© 13
2.2 Node.js 16
2.3 À̺¥Æ® ·çÇÁ 18
2.4 ÆÐÅ°Áö ÀÇÁ¸¼º °ü¸® 21
__2.4.1 package.json 21 / 2.4.2 package-lock.json 23 / 2.4.3 package.json ÆÄÀÏ ºÐ¼® 23
2.5 Å¸ÀÔ½ºÅ©¸³Æ® 25
__2.5.1 º¯¼ö ¼±¾ð 26 / 2.5.2 Å¸ÀÔ½ºÅ©¸³Æ®¿¡¼­ Áö¿øÇϴ ŸÀÔ 27
__2.5.3 Å¸ÀÔ Á¤ÀÇÇϱâ 29 / 2.5.4 Å¸ÀÔ ±¸¼ºÇϱâ 30
2.6 µ¥Ä¿·¹ÀÌÅÍ 32
__2.6.1 µ¥Ä¿·¹ÀÌÅÍ ÇÕ¼º 34 / 2.6.2 Å¬·¡½º µ¥Ä¿·¹ÀÌÅÍ 35 / 2.6.3 ¸Þ¼­µå µ¥Ä¿·¹ÀÌÅÍ 36
__2.6.4 Á¢±ÙÀÚ µ¥Ä¿·¹ÀÌÅÍ 38 / 2.6.5 ¼Ó¼º µ¥Ä¿·¹ÀÌÅÍ 39 / 2.6.6 ¸Å°³º¯¼ö µ¥Ä¿·¹ÀÌÅÍ 40
__2.6.7 µ¥Ä¿·¹ÀÌÅÍ ¿ä¾à 42
½¬¾î °¡´Â ÆäÀÌÁö ¹é¿£µå ·Îµå¸Ê 43

CHAPTER 3 ¾ÖÇø®ÄÉÀ̼ÇÀÇ °ü¹®: ÀÎÅÍÆäÀ̽º 45

3.1 ÄÁÆ®·Ñ·¯ 45
__3.1.1 ¶ó¿ìÆà47 / 3.1.2 ¿ÍÀϵå Ä«µå »ç¿ë 48 / 3.1.3 ¿äû °´Ã¼ 48 / 3.1.4 ÀÀ´ä 49
__3.1.5 Çì´õ 52 / 3.1.6 ¸®µð·º¼Ç 54 / 3.1.7 ¶ó¿ìÆ® ¸Å°³º¯¼ö 55
__3.1.8 ÇÏÀ§ µµ¸ÞÀΠ¶ó¿ìÆà56 / 3.1.9 ÆäÀ̷ε場ٷç±â 58
3.2 À¯Àú ¼­ºñ½ºÀÇ ÀÎÅÍÆäÀ̽º 59
½¬¾î °¡´Â ÆäÀÌÁö °üÁ¡ ÁöÇâ ÇÁ·Î±×·¡¹Ö 64

CHAPTER 4 Çٽɠµµ¸ÞÀΠ·ÎÁ÷À» Æ÷ÇÔÇϴ ÇÁ·Î¹ÙÀÌ´õ 65

4.1 ÇÁ·Î¹ÙÀÌ´õ 65
4.2 ÇÁ·Î¹ÙÀÌ´õ µî·Ï°ú »ç¿ë 67
__4.2.1 ÇÁ·Î¹ÙÀÌ´õ µî·Ï 67 / 4.2.2 ¼Ó¼º ±â¹Ý ÁÖÀÔ 67
4.3 À¯Àú ¼­ºñ½º¿¡ È¸¿ø °¡ÀÔ ·ÎÁ÷ ±¸ÇöÇϱâ 70
__4.3.1 UsersService ÇÁ·Î¹ÙÀÌ´õ »ý¼º 70 / 4.3.2 È¸¿ø °¡ÀÔ 71
__4.3.3 È¸¿ø °¡ÀÔ À̸ÞÀÏ ¹ß¼Û 73 / 4.3.4 À̸ÞÀÏ ÀÎÁõ 77
__4.3.5 ·Î±×ÀΠ77 / 4.3.6 À¯Àú Á¤º¸ Á¶È¸ 78
½¬¾î °¡´Â ÆäÀÌÁö ½ºÄÚÇÁ 79
½ÉÈ­ ÇнÀ 1 Ä¿½ºÅÒ ÇÁ·Î¹ÙÀÌ´õ 82

CHAPTER 5 SW º¹Àâµµ¸¦ ³·Ãß±â À§ÇÑ ¸ðµâ ¼³°è 91

5.1 ¸ðµâ: ÀÀÁý¼º Àִ ¼³°è 91
__5.1.1 ¸ðµâ ´Ù½Ã ³»º¸³»±â 92 / 5.1.2 Àü¿ª ¸ðµâ 94
5.2 À¯Àú ¼­ºñ½ºÀÇ ¸ðµâ ºÐ¸® 95
__5.2.1 UsersModule ºÐ¸® 95 / 5.2.2 EmailModule ºÐ¸® 96

CHAPTER 6 µ¿Àû ¸ðµâÀ» È°¿ëÇѠȯ°æ º¯¼ö ±¸¼º 99

6.1 µ¿Àû ¸ðµâ 99
6.2 dotenv¸¦ ÀÌ¿ëÇÑ Config ¼³Á¤ 99
6.3 Nest¿¡¼­ Á¦°øÇϴ Config ÆÐÅ°Áö 102
6.4 À¯Àú ¼­ºñ½º¿¡ È¯°æ º¯¼ö ±¸¼ºÇϱâ 105
__6.4.1 Ä¿½ºÅÒ Config ÆÄÀÏ ÀÛ¼º 105 / 6.4.2 µ¿Àû ConfigModule µî·Ï 106
½¬¾î °¡´Â ÆäÀÌÁö ÀÇÁ¸¼º ÁÖÀÔ°ú Á¦¾î ¹ÝÀü 110

CHAPTER 7 ÆÄÀÌÇÁ¿Í À¯È¿¼º °Ë»ç: ¿äûÀÌ Á¦´ë·Î Àü´ÞµÇ¾ú´Â°¡ 113

7.1 ÆÄÀÌÇÁ 113
7.2 ÆÄÀÌÇÁÀÇ ³»ºÎ ±¸Çö ÀÌÇØÇϱâ 116
7.3 À¯È¿¼º °Ë»ç ÆÄÀÌÇÁ ¸¸µé±â 117
7.4 À¯Àú ¼­ºñ½º¿¡ À¯È¿¼º °Ë»ç Àû¿ëÇϱâ 120
__7.4.1 À¯Àú »ý¼º º»¹®ÀÇ À¯È¿¼º °Ë»ç 120 / 7.4.2 class-transformer È°¿ë 121
__7.4.3 Ä¿½ºÅÒ À¯È¿¼º °Ë»ç±â ÀÛ¼º 124
½¬¾î °¡´Â ÆäÀÌÁö ÀÎÁõ vs Àΰ¡ 127

CHAPTER 8 ¿µ¼ÓÈ­: µ¥ÀÌÅ͸¦ ±â·ÏÇÏ°í ´Ù·ç±â 131

8.1 MySQL µ¥ÀÌÅͺ£À̽º ¼³Á¤ 131
8.2 TypeORMÀ¸·Î µ¥ÀÌÅͺ£À̽º ¿¬°á 134
8.3 È¸¿ø °¡ÀÔÀ» ¿äûÇÑ À¯ÀúÀÇ Á¤º¸ ÀúÀåÇϱâ 138
8.4 Æ®·£Àè¼Ç Àû¿ë 141
__8.4.1 QueryRunner¸¦ »ç¿ëÇϴ ¹æ¹ý 142
__8.4.2 transaction ÇÔ¼ö¸¦ Á÷Á¢ ÀÌ¿ëÇϴ ¹æ¹ý 143
8.5 ¸¶À̱׷¹À̼Ǡ144
½¬¾î °¡´Â ÆäÀÌÁö ÀúÀå¼Ò ÆÐÅÏ 151

CHAPTER 9 ¿äû Ã³¸® Àü¿¡ ºÎ°¡ ±â´ÉÀ» ¼öÇàÇϱâ À§ÇÑ ¹Ìµé¿þ¾î 153

9.1 ¹Ìµé¿þ¾î 153
9.2 Logger ¹Ìµé¿þ¾î 154
9.3 MiddlewareConsumer 155
9.4 Àü¿ªÀ¸·Î Àû¿ëÇϱâ 157

CHAPTER 10 ±ÇÇÑ È®ÀÎÀ» À§ÇÑ °¡µå: JWT ÀÎÁõ/Àΰ¡ 159

10.1 °¡µå 159
10.2 °¡µå¸¦ ÀÌ¿ëÇÑ Àΰ¡ 160
__10.2.1 ½ÇÇà ÄÜÅؽºÆ® 160 / 10.2.2 °¡µå Àû¿ë 161
10.3 ÀÎÁõ 162
__10.3.1 ¼¼¼Ç ±â¹Ý ÀÎÁõ 163 / 10.3.2 ÅäÅ« ±â¹Ý ÀÎÁõ 164
10.4 JWT 165
__10.4.1 Çì´õ 166 / 10.4.2 ÆäÀ̷εå 166 / 10.4.3 ½Ã±×³Êó 167
10.5 À¯Àú ¼­ºñ½ºÀÇ À̸ÞÀÏ ÀÎÁõ Ã³¸®¿Í JWT ¹ß±Þ 169
__10.5.1 È¸¿ø °¡ÀÔ À̸ÞÀÏ ÀÎÁõ 169 / 10.5.2 ·Î±×ÀΠ172
__10.5.3 JWT ÀÎÁõ: È¸¿ø Á¤º¸ Á¶È¸ 173 / 10.5.4 °¡µå¸¦ ÀÌ¿ëÇÑ Àΰ¡ Ã³¸® 175
½¬¾î °¡´Â ÆäÀÌÁö ½½¶óÀ̵ù ¼¼¼Ç°ú ¸®ÇÁ·¹½Ã ÅäÅ« 178
½ÉÈ­ ÇнÀ 2 Ä¿½ºÅÒ ¸Å°³º¯¼ö µ¥Ä¿·¹ÀÌÅÍ 181
½ÉÈ­ ÇнÀ 3 ¸ÞŸµ¥ÀÌÅÍ(Reflection Å¬·¡½º) 186

CHAPTER 11 ·Î±ë: ¾ÖÇø®ÄÉÀ̼ÇÀÇ µ¿ÀÛ ±â·Ï 193

11.1 ³»À堷ΰŠ194
__11.1.1 ·Î±ë ºñÈ°¼ºÈ­ 195 / 11.1.2 ·Î±× ·¹º§ ÁöÁ¤ 195
11.2 Ä¿½ºÅÒ ·Î°Å 196
__11.2.1 Ä¿½ºÅÒ ·Î°Å ÁÖÀÔÇؼ­ »ç¿ëÇϱâ 197 / 11.2.2 Ä¿½ºÅÒ ·Î°Å¸¦ Àü¿ªÀ¸·Î »ç¿ëÇϱâ 198
__11.2.3 ¿ÜºÎ ·Î°Å »ç¿ëÇϱâ 198
11.3 À¯Àú ¼­ºñ½º¿¡ winston ·Î°Å Àû¿ëÇϱâ 199
__11.3.1 nest-winston Àû¿ë 199 / 11.3.2 ³»À堷ΰŠ´ëüÇϱâ 202
__11.3.3 ºÎÆ®½ºÆ®·¡ÇαîÁö Æ÷ÇÔÇÏ¿© ³»À堷ΰŠ´ëüÇϱâ 204
__11.3.4 ·Î±× Àü¼ÛÀ» ´Ù¾çÇÏ°Ô 206

CHAPTER 12 ¸ðµç °ÍÀº Ç×»ó ½ÇÆÐÇÑ´Ù: ¿¹¿Ü ÇÊÅÍ 209

12.1 ¿¹¿Ü Ã³¸® 209
12.2 ¿¹¿Ü ÇÊÅÍ 214
12.3 À¯Àú ¼­ºñ½º¿¡ ¿¹¿Ü ÇÊÅÍ Àû¿ëÇϱâ 217

CHAPTER 13 ÀÎÅͼÁÅͷΠ¿äû°ú ÀÀ´äÀ» ÀÔ¸À¿¡ ¸Â°Ô ¹Ù²Ù±â 219

13.1 ÀÎÅͼÁÅÍ 219
13.2 ÀÀ´ä°ú ¿¹¿Ü ¸ÅÇΠ222
13.3 À¯Àú ¼­ºñ½º¿¡ ÀÎÅͼÁÅÍ Àû¿ëÇϱâ 224
½¬¾î °¡´Â ÆäÀÌÁö ¿äû »ý¸íÁÖ±â 226

CHAPTER 14 Å½ºÅ© ½ºÄÉÁÙ¸µ 229

14.1 @nestjs/schedule ÆÐÅ°Áö 229
14.2 Å½ºÅ© ½ºÄÉÁÙ¸µÀ» ¼±¾ðÇϴ 3°¡Áö ¹æ½Ä 230
__14.2.1 Å©·Ð Àâ ¼±¾ð ¹æ½Ä 230 / 14.2.2 ÀÎÅ͹ú ¼±¾ð ¹æ½Ä 232 / 14.2.3 Å¸ÀӾƿô ¼±¾ð ¹æ½Ä 233
14.3 µ¿Àû Å½ºÅ© ½ºÄÉÁÙ¸µ 233

CHAPTER 15 Çコ Ã¼Å©: ´ìÀÇ ¼­¹ö´Â °Ç°­ÇϽŰ¡¿ä 237

15.1 Terminus Àû¿ë 238
15.2 Çコ Ã¼Å© 238
15.3 TypeOrm Çコ Ã¼Å© 240
15.4 Ä¿½ºÅÒ »óÅ ǥ½Ã±â 241

CHAPTER 16 CQRS¸¦ ÀÌ¿ëÇÑ °ü½É»ç ºÐ¸® 247

16.1 CQRS ÆÐÅÏ 247
16.2 À¯Àú ¼­ºñ½º¿¡ CQRS Àû¿ëÇϱâ 249
__16.2.1 Ä¿¸Çµå 249 / 16.2.2 À̺¥Æ® 251 / 16.2.3 Äõ¸® 254

CHAPTER 17 Å¬¸° ¾ÆÅ°ÅØó 257

17.1 Å¬¸° ¾ÆÅ°ÅØó 259
17.2 SOLID °´Ã¼ ÁöÇâ ¼³°è ¿øÄ¢ 261
17.3 À¯Àú ¼­ºñ½º¿¡ Å¬¸° ¾ÆÅ°ÅØó Àû¿ëÇϱâ 262

CHAPTER 18 Å×½ºÆ® ÀÚµ¿È­ 273

18.1 ¼ÒÇÁÆ®¿þ¾î Å×½ºÆ® 273
18.2 NestÀÇ ±âº» Å×½ºÆ® ÇÁ·¹ÀÓ¿öÅ©: Jest¿Í SuperTest 276
18.3 Jest¸¦ ÀÌ¿ëÇÑ ´ÜÀ§ Å×½ºÆ® ¿¹½Ã 276
18.4 À¯Àú ¼­ºñ½º Å×½ºÆ® 279
18.5 Å×½ºÆ® Ä¿¹ö¸®Áö ÃøÁ¤ 287

APPENDIX ormconfig.json µ¿Àû »ý¼º 291

ã¾Æº¸±â 295

ÇÑÁÙ ¼­Æò