Ã¥¼Ò°³
°¡Àå Áøº¸ÇÑ ÇÁ·¹ÀÓ¿öÅ©·Î ¿ì¾ÆÇÏ°Ô ¹é¿£µå ÀÔ¹®Çϱâ NestJS´Â Express¸¦ ±â¹ÝÀ¸·Î DB, ORM, À¯È¿¼º °Ë»ç µîÀÇ ¶óÀ̺귯¸®¸¦ ³»ÀåÇÑ Â÷¼¼´ë ¹é¿£µå ÇÁ·¹ÀÓ¿öÅ©´Ù. Á¦¾î ¹ÝÀü, ÀÇÁ¸¼º ÁÖÀÔ, AOP µî °´Ã¼ ÁöÇâ °³³äÀ» µµÀÔÇß°í ŸÀÔ½ºÅ©¸³Æ®·Î ¸ðµâ/ÄÄÆ÷³ÍÆ® ±â¹ÝÀÇ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ÀÖ´Ù. ÀÌ Ã¥Àº ÀúÀÚ°¡ ¸ðµÎ½ÎÀο¡ ¸ö´ãÀ¸¸ç ÀÍÈù ³ëÇÏ¿ì¿Í ÀλçÀÌÆ®¸¦ ¹ÙÅÁÀ¸·Î NestJS¸¦ È°¿ëÇØ È¸¿ø °¡ÀÔ, À̸ÞÀÏ ÀÎÁõ, ·Î±×ÀÎ, ȸ¿ø Á¤º¸ Á¶È¸ ±â´ÉÀ» °®Ãá REST API À¯Àú ¼ºñ½º¸¦ ¸¸µé¾îº»´Ù. ÇÁ·ÎÁ§Æ®¿¡ Á¡Â÷ »ìÀ» ºÙ¿©³ª°¡¸ç ¹é¿£µå °³¹ß¿¡ ÇÊ¿äÇÑ È¯°æ º¯¼ö ¼³Á¤, ¿äû À¯È¿¼º °Ë»ç, ÀÎÁõ(JWT), ·Î±ë, Çコ üũ, CQRS, Ŭ¸° ¾ÆÅ°ÅØó, ´ÜÀ§ Å×½ºÆ® µî Áö½Ä°ú ±â¼úÀ» Á¦´ë·Î ÀÍÈú ¼ö ÀÖ°Ô ÁýÇÊÇß´Ù.
ÀúÀÚ¼Ò°³
¿À·£ ±â°£ ÈÞ´ëÆù¿¡ žÀçµÇ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µé´Ù ÇöÀç´Â ¸ðµÎ½ÎÀο¡¼ ¹é¿£µå ¿£Áö´Ï¾î·Î È°µ¿ ÁßÀÌ´Ù. ¸ðÅä´Â ÀϽſìÀϽÅ(ìíãæéÑìíãæ)ÀÌ°í, ¿µÈ¿Í ±³¾ç °úÇÐ ¼ÀûÀ» ÁÁ¾ÆÇÑ´Ù. Àú¼·Î´Â ¡¶NestJS·Î ¹è¿ì´Â ¹é¿£µå ÇÁ·Î±×·¡¹Ö¡·(2022, Á¦ÀÌÆà)ÀÌ ÀÖ´Ù.
¸ñÂ÷
º£Å¸¸®´õ Èıâ x ¸Ó¸®¸» xii ÀÌ Ã¥¿¡ ´ëÇÏ¿© xiiiCHAPTER 1 Hello NestJS 11.1 NestJSÀÇ ÀåÁ¡ 11.2 Express°¡ ÁÁÀ»±î, NestJS°¡ ÁÁÀ»±î 21.3 NestJS ¼³Ä¡ 6__1.3.1 Node.js ¼³Ä¡ 6 / 1.3.2 NestJS ÇÁ·ÎÁ§Æ® »ý¼º 71.4 Ã¥¿¡¼ ¸¸µé ¾ÖÇø®ÄÉÀ̼Ç: À¯Àú ¼ºñ½º 9CHAPTER 2 À¥ °³¹ß ±âÃÊ Áö½Ä 132.1 À¥ ÇÁ·¹ÀÓ¿öÅ© 132.2 Node.js 162.3 À̺¥Æ® ·çÇÁ 182.4 ÆÐÅ°Áö ÀÇÁ¸¼º °ü¸® 21__2.4.1 package.json 21 / 2.4.2 package-lock.json 23 / 2.4.3 package.json ÆÄÀÏ ºÐ¼® 232.5 ŸÀÔ½ºÅ©¸³Æ® 25__2.5.1 º¯¼ö ¼±¾ð 26 / 2.5.2 ŸÀÔ½ºÅ©¸³Æ®¿¡¼ Áö¿øÇϴ ŸÀÔ 27__2.5.3 ŸÀÔ Á¤ÀÇÇϱâ 29 / 2.5.4 ŸÀÔ ±¸¼ºÇϱâ 302.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½¬¾î °¡´Â ÆäÀÌÁö ¹é¿£µå ·Îµå¸Ê 43CHAPTER 3 ¾ÖÇø®ÄÉÀ̼ÇÀÇ °ü¹®: ÀÎÅÍÆäÀ̽º 453.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 ÆäÀÌ·Îµå ´Ù·ç±â 583.2 À¯Àú ¼ºñ½ºÀÇ ÀÎÅÍÆäÀ̽º 59½¬¾î °¡´Â ÆäÀÌÁö °üÁ¡ ÁöÇâ ÇÁ·Î±×·¡¹Ö 64CHAPTER 4 ÇÙ½É µµ¸ÞÀÎ ·ÎÁ÷À» Æ÷ÇÔÇÏ´Â ÇÁ·Î¹ÙÀÌ´õ 654.1 ÇÁ·Î¹ÙÀÌ´õ 654.2 ÇÁ·Î¹ÙÀÌ´õ µî·Ï°ú »ç¿ë 67__4.2.1 ÇÁ·Î¹ÙÀÌ´õ µî·Ï 67 / 4.2.2 ¼Ó¼º ±â¹Ý ÁÖÀÔ 674.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 Ä¿½ºÅÒ ÇÁ·Î¹ÙÀÌ´õ 82CHAPTER 5 SW º¹Àâµµ¸¦ ³·Ãß±â À§ÇÑ ¸ðµâ ¼³°è 915.1 ¸ðµâ: ÀÀÁý¼º ÀÖ´Â ¼³°è 91__5.1.1 ¸ðµâ ´Ù½Ã ³»º¸³»±â 92 / 5.1.2 Àü¿ª ¸ðµâ 945.2 À¯Àú ¼ºñ½ºÀÇ ¸ðµâ ºÐ¸® 95__5.2.1 UsersModule ºÐ¸® 95 / 5.2.2 EmailModule ºÐ¸® 96CHAPTER 6 µ¿Àû ¸ðµâÀ» È°¿ëÇÑ È¯°æ º¯¼ö ±¸¼º 996.1 µ¿Àû ¸ðµâ 996.2 dotenv¸¦ ÀÌ¿ëÇÑ Config ¼³Á¤ 996.3 Nest¿¡¼ Á¦°øÇÏ´Â Config ÆÐÅ°Áö 1026.4 À¯Àú ¼ºñ½º¿¡ ȯ°æ º¯¼ö ±¸¼ºÇϱâ 105__6.4.1 Ä¿½ºÅÒ Config ÆÄÀÏ ÀÛ¼º 105 / 6.4.2 µ¿Àû ConfigModule µî·Ï 106½¬¾î °¡´Â ÆäÀÌÁö ÀÇÁ¸¼º ÁÖÀÔ°ú Á¦¾î ¹ÝÀü 110CHAPTER 7 ÆÄÀÌÇÁ¿Í À¯È¿¼º °Ë»ç: ¿äûÀÌ Á¦´ë·Î Àü´ÞµÇ¾ú´Â°¡ 1137.1 ÆÄÀÌÇÁ 1137.2 ÆÄÀÌÇÁÀÇ ³»ºÎ ±¸Çö ÀÌÇØÇϱâ 1167.3 À¯È¿¼º °Ë»ç ÆÄÀÌÇÁ ¸¸µé±â 1177.4 À¯Àú ¼ºñ½º¿¡ À¯È¿¼º °Ë»ç Àû¿ëÇϱâ 120__7.4.1 À¯Àú »ý¼º º»¹®ÀÇ À¯È¿¼º °Ë»ç 120 / 7.4.2 class-transformer È°¿ë 121__7.4.3 Ä¿½ºÅÒ À¯È¿¼º °Ë»ç±â ÀÛ¼º 124½¬¾î °¡´Â ÆäÀÌÁö ÀÎÁõ vs Àΰ¡ 127CHAPTER 8 ¿µ¼ÓÈ: µ¥ÀÌÅ͸¦ ±â·ÏÇÏ°í ´Ù·ç±â 1318.1 MySQL µ¥ÀÌÅͺ£À̽º ¼³Á¤ 1318.2 TypeORMÀ¸·Î µ¥ÀÌÅͺ£À̽º ¿¬°á 1348.3 ȸ¿ø °¡ÀÔÀ» ¿äûÇÑ À¯ÀúÀÇ Á¤º¸ ÀúÀåÇϱâ 1388.4 Æ®·£Àè¼Ç Àû¿ë 141__8.4.1 QueryRunner¸¦ »ç¿ëÇÏ´Â ¹æ¹ý 142__8.4.2 transaction ÇÔ¼ö¸¦ Á÷Á¢ ÀÌ¿ëÇÏ´Â ¹æ¹ý 1438.5 ¸¶À̱׷¹ÀÌ¼Ç 144½¬¾î °¡´Â ÆäÀÌÁö ÀúÀå¼Ò ÆÐÅÏ 151CHAPTER 9 ¿äû ó¸® Àü¿¡ ºÎ°¡ ±â´ÉÀ» ¼öÇàÇϱâ À§ÇÑ ¹Ìµé¿þ¾î 1539.1 ¹Ìµé¿þ¾î 1539.2 Logger ¹Ìµé¿þ¾î 1549.3 MiddlewareConsumer 1559.4 Àü¿ªÀ¸·Î Àû¿ëÇϱâ 157CHAPTER 10 ±ÇÇÑ È®ÀÎÀ» À§ÇÑ °¡µå: JWT ÀÎÁõ/Àΰ¡ 15910.1 °¡µå 15910.2 °¡µå¸¦ ÀÌ¿ëÇÑ Àΰ¡ 160__10.2.1 ½ÇÇà ÄÜÅؽºÆ® 160 / 10.2.2 °¡µå Àû¿ë 16110.3 ÀÎÁõ 162__10.3.1 ¼¼¼Ç ±â¹Ý ÀÎÁõ 163 / 10.3.2 ÅäÅ« ±â¹Ý ÀÎÁõ 16410.4 JWT 165__10.4.1 Çì´õ 166 / 10.4.2 ÆäÀ̷εå 166 / 10.4.3 ½Ã±×³Êó 16710.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 Ŭ·¡½º) 186CHAPTER 11 ·Î±ë: ¾ÖÇø®ÄÉÀ̼ÇÀÇ µ¿ÀÛ ±â·Ï 19311.1 ³»Àå ·Î°Å 194__11.1.1 ·Î±ë ºñÈ°¼ºÈ 195 / 11.1.2 ·Î±× ·¹º§ ÁöÁ¤ 19511.2 Ä¿½ºÅÒ ·Î°Å 196__11.2.1 Ä¿½ºÅÒ ·Î°Å ÁÖÀÔÇؼ »ç¿ëÇϱâ 197 / 11.2.2 Ä¿½ºÅÒ ·Î°Å¸¦ Àü¿ªÀ¸·Î »ç¿ëÇϱâ 198__11.2.3 ¿ÜºÎ ·Î°Å »ç¿ëÇϱâ 19811.3 À¯Àú ¼ºñ½º¿¡ winston ·Î°Å Àû¿ëÇϱâ 199__11.3.1 nest-winston Àû¿ë 199 / 11.3.2 ³»Àå ·Î°Å ´ëüÇϱâ 202__11.3.3 ºÎÆ®½ºÆ®·¡ÇαîÁö Æ÷ÇÔÇÏ¿© ³»Àå ·Î°Å ´ëüÇϱâ 204__11.3.4 ·Î±× Àü¼ÛÀ» ´Ù¾çÇÏ°Ô 206CHAPTER 12 ¸ðµç °ÍÀº Ç×»ó ½ÇÆÐÇÑ´Ù: ¿¹¿Ü ÇÊÅÍ 20912.1 ¿¹¿Ü ó¸® 20912.2 ¿¹¿Ü ÇÊÅÍ 21412.3 À¯Àú ¼ºñ½º¿¡ ¿¹¿Ü ÇÊÅÍ Àû¿ëÇϱâ 217CHAPTER 13 ÀÎÅͼÁÅÍ·Î ¿äû°ú ÀÀ´äÀ» ÀÔ¸À¿¡ ¸Â°Ô ¹Ù²Ù±â 21913.1 ÀÎÅͼÁÅÍ 21913.2 ÀÀ´ä°ú ¿¹¿Ü ¸ÅÇÎ 22213.3 À¯Àú ¼ºñ½º¿¡ ÀÎÅͼÁÅÍ Àû¿ëÇϱâ 224½¬¾î °¡´Â ÆäÀÌÁö ¿äû »ý¸íÁÖ±â 226CHAPTER 14 ŽºÅ© ½ºÄÉÁÙ¸µ 22914.1 @nestjs/schedule ÆÐÅ°Áö 22914.2 ŽºÅ© ½ºÄÉÁÙ¸µÀ» ¼±¾ðÇÏ´Â 3°¡Áö ¹æ½Ä 230__14.2.1 Å©·Ð Àâ ¼±¾ð ¹æ½Ä 230 / 14.2.2 ÀÎÅ͹ú ¼±¾ð ¹æ½Ä 232 / 14.2.3 ŸÀӾƿô ¼±¾ð ¹æ½Ä 23314.3 µ¿Àû ŽºÅ© ½ºÄÉÁÙ¸µ 233CHAPTER 15 Çコ üũ: ´ìÀÇ ¼¹ö´Â °Ç°ÇϽŰ¡¿ä 23715.1 Terminus Àû¿ë 23815.2 Çコ üũ 23815.3 TypeOrm Çコ üũ 24015.4 Ä¿½ºÅÒ »óÅ ǥ½Ã±â 241CHAPTER 16 CQRS¸¦ ÀÌ¿ëÇÑ °ü½É»ç ºÐ¸® 24716.1 CQRS ÆÐÅÏ 24716.2 À¯Àú ¼ºñ½º¿¡ CQRS Àû¿ëÇϱâ 249__16.2.1 Ä¿¸Çµå 249 / 16.2.2 À̺¥Æ® 251 / 16.2.3 Äõ¸® 254CHAPTER 17 Ŭ¸° ¾ÆÅ°ÅØó 25717.1 Ŭ¸° ¾ÆÅ°ÅØó 25917.2 SOLID °´Ã¼ ÁöÇâ ¼³°è ¿øÄ¢ 26117.3 À¯Àú ¼ºñ½º¿¡ Ŭ¸° ¾ÆÅ°ÅØó Àû¿ëÇϱâ 262CHAPTER 18 Å×½ºÆ® ÀÚµ¿È 27318.1 ¼ÒÇÁÆ®¿þ¾î Å×½ºÆ® 27318.2 NestÀÇ ±âº» Å×½ºÆ® ÇÁ·¹ÀÓ¿öÅ©: Jest¿Í SuperTest 27618.3 Jest¸¦ ÀÌ¿ëÇÑ ´ÜÀ§ Å×½ºÆ® ¿¹½Ã 27618.4 À¯Àú ¼ºñ½º Å×½ºÆ® 27918.5 Å×½ºÆ® Ä¿¹ö¸®Áö ÃøÁ¤ 287APPENDIX ormconfig.json µ¿Àû »ý¼º 291ã¾Æº¸±â 295