ÄÜÅÙÃ÷ »ó¼¼º¸±â
Node.js ¹é¿£µå °³¹ßÀÚ µÇ±â


Node.js ¹é¿£µå °³¹ßÀÚ µÇ±â

Node.js ¹é¿£µå °³¹ßÀÚ µÇ±â

<¹Ú½Â±Ô> Àú | °ñµç·¡ºø

Ãâ°£ÀÏ
2023-04-30
ÆÄÀÏÆ÷¸Ë
ePub
¿ë·®
11 M
Áö¿ø±â±â
PC½º¸¶Æ®ÆùÅÂºí¸´PC
ÇöȲ
½Åû °Ç¼ö : 0 °Ç
°£·« ½Åû ¸Þ¼¼Áö
ÄÜÅÙÃ÷ ¼Ò°³
ÀúÀÚ ¼Ò°³
¸ñÂ÷
ÇÑÁÙ¼­Æò

ÄÜÅÙÃ÷ ¼Ò°³

- ÀÚ¹Ù½ºÅ©¸³Æ® Node.js ¹é¿£µå °³¹ßÀÚ°¡ µÇ°í ½Í´Ù¸é
- HTML/CSS/ÀÚ¹Ù½ºÅ©¸³Æ® ±×´ÙÀ½¿¡ ²À º¸¼¼¿ä


½Ç·ÂÀ» °®Ãá °³¹ßÀÚ·Î ¼ºÀåÇÏ·Á¸é ½ÃÀÛÀÌ Áß¿äÇÕ´Ï´Ù. ±×·¡¼­ ÀÌ Ã¥Àº ¹«¾ùºÎÅÍ ÀÍÇô¾ß ÇÏ´ÂÁö ¸·¸·ÇÑ ÀÔ¹®ÀÚ¿¡°Ô ¹é¿£µå °³¹ßÀÇ Çʼö Áö½ÄÀ» ÇнÀ ·Îµå¸Ê Áß½ÉÀ¸·Î ¼³¸íÇÕ´Ï´Ù. À̾ ÀÚ¹Ù½ºÅ©¸³Æ® ±â¹Ý ¹é¿£µå °³¹ß¿¡ ²À ÇÊ¿äÇÑ 3´ëÀåÀΠŸÀÔ½ºÅ©¸³Æ® ¾ð¾î¿Í Node.js ·±Å¸ÀÓ, ÀͽºÇÁ·¹½º¿Í NestJS À¥ ÇÁ·¹ÀÓ¿öÅ©¸¦ È°¿ëÇÏ¿© ÃֽŠƮ·»µå¿¡ ¸Â°Ô ±×¸®°í ½Ç¹«¿¡ À¯¿ëÇϵµ·Ï ¹é¿£µå ±â¼úÀ» ¾Ë·ÁÁÝ´Ï´Ù. °Ë»ö, ´ñ±Û, ÆäÀÌÁö³×ÀÌ¼Ç ±â´ÉÀ» Á¦°øÇÏ´Â °Ô½ÃÆÇ, äÆÃ¹æ ±â´ÉÀÌ ÀÖ´Â ½Ç½Ã°£ Åë½Å äÆà ÇÁ·ÎÁ§Æ®±îÁö źźÇÏ°í À¯¿ëÇÏ°Ô ¾Ë·Áµå¸³´Ï´Ù. ¸ðµç Àå ³¡¿¡´Â ¿¬½À¹®Á¦°¡ ¼ö·ÏµÇ¾î ÀÖ¾î ¹è¿î ³»¿ëÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Ã¥ÀÌ ¿©·¯ºÐÀÇ ¹é¿£µå °³¹ßÀÚ ¿©Á¤¿¡ µçµçÇÑ ³ªÄ§¹ÝÀÌ µÇ¾î ÁÙ °Ì´Ï´Ù.

ÀúÀÚ¼Ò°³

¾ÆÁ÷µµ °³¹ßÀÌ Àç¹Ì ÀÖ´Â 15³âÂ÷ õ»ó °³¹ßÀÚÀÔ´Ï´Ù. À¥ °³¹ß, °ÔÀÓ ¹é¿£µå °³¹ß, Ç÷§Æû ¹× ÀÎÇÁ¶ó °³¹ß µî ´Ù¾çÇÑ ¿µ¿ªÀ» °æÇèÇß½À´Ï´Ù. ÇöÀç´Â Ä«Ä«¿À¿£ÅÍÅ×ÀθÕÆ®¿¡¼­ ¹é¿£µå °³¹ßÀÚ·Î ÀÏÇÕ´Ï´Ù. Çö) Ä«Ä«¿À¿£ÅÍÅ×ÀθÕÆ® ÆäÀÌÁö ¼­ºñ½º °³¹ßÆÀ Àü) Æ®¸®³ëµå (Æ÷ÄÚÆÎ, Æ÷ÄÚÆ÷ÄÚ) ¼­¹ö °³¹ßÀÚ Àü) NHN Japan Ç÷§Æû °³¹ßÆÀ

¸ñÂ÷

[·¹º§ 1 ¹é¿£µå °³¹ßÀÚ ÀÔ¹®Çϱâ]

00Àå °³¹ß ȯ°æ ±¸ÃàÇϱâ
_0.1 À©µµ¿ì °³¹ß ȯ°æ ±¸Ãà
__0.1.1 Node.js ¼³Ä¡
__0.1.2 ±ê ¼³Ä¡
__0.1.3 ºñÁÖ¾ó ½ºÆ©µð¿À ÄÚµå ¼³Ä¡
_0.2 ¸ÆOS °³¹ß ȯ°æ ±¸Ãà
__0.2.1 Node.js ¼³Ä¡
__0.2.2 ±ê ¼³Ä¡
__0.2.3 ºñÁÖ¾ó ½ºÆ©µð¿À ÄÚµå ¼³Ä¡
_0.3 ¸®´ª½º °³¹ß ȯ°æ ±¸Ãà
__0.3.1 Node.js ¼³Ä¡
__0.3.2 ±ê ¼³Ä¡
__0.3.3 ºñÁÖ¾ó ½ºÆ©µð¿À ÄÚµå ¼³Ä¡
_0.4 ¿¹Á¦ ¼Ò½º ÄÚµå ³»·Á¹Þ±â
_0.5 VSCode·Î ³»·Á¹ÞÀº ¼Ò½º ÄÚµå ½ÇÇàÇϱâ
_0.6 VSCode ÀÔ¹®ÀÚ¸¦ À§ÇÑ »ç¿ë¹ý ¾È³»
__0.6.1 ÄÚµå ½ÇÇàÇϱâ
__0.6.2 µð¹ö±ëÇϱâ
__0.6.3 VSCode ´ÜÃàÅ°

01Àå ¾Ë¾ÆµÎ¸é ÁÁÀº ¹é¿£µå °³¹ßÀÚ¸¦ À§ÇÑ Áö½Ä
_1.1 ¹é¿£µå °³¹ßÀÚ°¡ ¾Ë¾Æ¾ß ÇÏ´Â °Í
_1.2 ¹é¿£µå °³¹ßÀÚÀÇ ¾÷¹«
_1.3 ¹é¿£µå ¾ÆÅ°ÅØó
_1.4 ¹é¿£µå ÇÁ·Î±×·¡¹Ö ¾ð¾î
_1.5 µ¥ÀÌÅͺ£À̽º
__1.5.1 RDB
__1.5.2 NoSQL(Not Only SQL)
_1.6 Ŭ¶ó¿ìµå ¼­ºñ½º
_1.7 ÀÚ¹Ù½ºÅ©¸³Æ® »ýÅ°è
__1.7.1 ÆÐÅ°Áö ¸Å´ÏÀú
__1.7.2 ºôµå µµ±¸
__1.7.3 °³¹ß µµ±¸
__1.7.4 À¥ ÇÁ·¹ÀÓ¿öÅ©
__1.7.5 ¹é¿£µå °³¹ß ȯ°æ
__1.7.6 ÀÎÇÁ¶ó
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

[·¹º§ 2 Node.js¿Í Express·Î ¹é¿£µå ÀÔ¹®Çϱâ]

02Àå Node.js·Î ¹é¿£µå ÀÔ¹®Çϱâ
_2.1 Node.js ¼Ò°³
_2.2 Node.js´Â ¼­¹ö¿¡¼­ ¾î¶»°Ô ÀÚ¹Ù½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ±î?
__2.2.1 Node.jsÀÇ ±¸¼º¿ä¼Ò
__2.2.2 ÀÚ¹Ù½ºÅ©¸³Æ® ½ÇÇàÀ» À§ÇÑ V8 ¿£Áø
__2.2.3 À̺¥Æ® ·çÇÁ¿Í ¿î¿µÃ¼Á¦ ´Ü ºñµ¿±â API ¹×
½º·¹µå Ç®À» Áö¿øÇÏ´Â libuv
__2.2.4 Node.js ¾ÆÅ°ÅØó
_2.3 Node.jsÀÇ ±â¼úÀûÀΠƯ¡
__2.3.1 ½Ì±Û ½º·¹µå
__2.3.2 À̺¥Æ® ±â¹Ý ¾ÆÅ°ÅØó
__2.3.3 À̺¥Æ® ·çÇÁ
_2.4 Node.js °ú¿¬ ¾µ ¸¸ÇÑ°¡?
_2.5 ³ªÀÇ Ã¹ Node.js ¼­¹ö ÇÁ·Î±×·¥
__2.5.1 hello.js ÆÄÀÏ »ý¼º ¹× ½ÇÇà
__2.5.2 curl ³»·Á¹Þ±â ¹× Å×½ºÆ®Çغ¸±â
_2.6 Á¤¸»·Î µ¿½Ã¿¡ ¿äûÀ» ó¸®ÇÏ´ÂÁö ¼º´É Å×½ºÆ®Çϱâ
__2.6.1 K6 ¼³Ä¡
__2.6.2 K6·Î ¼º´É Å×½ºÆ® ½ºÅ©¸³Æ® ÀÛ¼ºÇϱâ
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

03Àå Node.js¿Í ÀͽºÇÁ·¹½º·Î À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö ±¸ÇöÇϱâ
_3.1 OK¸¦ ¹ÝȯÇÏ´Â ¼­¹ö ¸¸µé±â
_3.2 ¶ó¿ìÅÍ ¸¸µé±â
_3.3 createServer( ) ¸®ÆÑÅ͸µÇϱâ
_3.4 µ¿ÀûÀ¸·Î ÀÀ´äÇϱâ
_3.5 ¶ó¿ìÅÍ ¸®ÆÑÅ͸µÇϱâ
_3.6 ÀͽºÇÁ·¹½º ÇÁ·¹ÀÓ¿öÅ© »ç¿ëÇϱâ
__3.6.1 ÀͽºÇÁ·¹½º ¼³Ä¡Çϱâ
__3.6.2 ³ªÀÇ Ã¹ ÀͽºÇÁ·¹½º ¼­¹ö ¸¸µé±â
__3.6.3 Node.js ¶óÀ̺귯¸®·Î ¸¸µç ¼­¹ö¸¦ ÀͽºÇÁ·¹½º·Î ±¸ÇöÇϱâ
_3.7 ÀͽºÇÁ·¹½º·Î °£´ÜÇÑ API ¼­¹ö ¸¸µé±â
__3.7.1 °Ô½ÃÆÇ API ÄÚµå ÀÛ¼ºÇϱâ
__3.7.2 API ±ÔÄ¢¿¡ ¸Â°Ô ¼­¹ö ±¸ÇöÇϱâ
_3.8 °Ô½ÃÆÇ API Å×½ºÆ®Çϱâ
__3.8.1 curl·Î GET È£ÃâÇϱâ
__3.8.2 curl·Î POST¸¦ È£ÃâÇØ °Ô½Ã±Û µî·ÏÇϱâ
__3.8.3 curl·Î DELETE¸¦ È£ÃâÇØ °Ô½Ã±Û »èÁ¦Çϱâ
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

04Àå npm°ú yarnÀ¸·Î ÆÐÅ°Áö °ü¸®Çϱâ
_4.1 npm ¼Ò°³
_4.2 ÆÐÅ°Áö¿Í ¸ðµâ
_4.3 package.json ÆÄÀÏÀ» ¸¸µé±â
_4.4 ÆÐÅ°Áö ¼³Ä¡, ¾÷µ¥ÀÌÆ®, »èÁ¦
__4.4.1 ÆÐÅ°Áö ¼³Ä¡Çϱâ
__4.4.2 ÆÐÅ°Áö ¾÷µ¥ÀÌÆ®Çϱâ
__4.4.3 ¼³Ä¡ÇÑ ÆÐÅ°Áö È®ÀÎÇϱâ
__4.4.4 ÆÐÅ°Áö »èÁ¦Çϱâ
_4.5 ½ºÅ©¸³Æ® ±â´É°ú NPX
__4.5.1 npm ½ºÅ©¸³Æ® ÆÄÀÏÀ» Á¤ÀÇÇϱâ
__4.5.2 NPX·Î ÄÚµå Æ÷¸ÅÆà ¸í·É¾î prettier ½ÇÇàÇϱâ
_4.6 ÆÐÅ°Áö Àá±Ý
_4.7 npmÀÇ ´ë¾È yarn
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

05Àå ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼­ ºñµ¿±â ó¸®Çϱâ
_5.1 ÀÚ¹Ù½ºÅ©¸³Æ® ºñµ¿±â ¼Ò°³
_5.2 Äݹé ÇÔ¼ö ¼Ò°³
_5.3 Promise °´Ã¼
__5.3.1 µ¿½Ã¿¡ ¿©·¯ Promise °´Ã¼ È£ÃâÇϱâ
__5.3.2 Promise ¿¹¿Ü ó¸®Çϱâ
__5.3.3 ÇÁ·Î¹Ì½ºÀÇ ¹®Á¦Á¡
_5.4 async await ±¸¹®
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

06Àå NoSQL µ¥ÀÌÅͺ£À̽º ¸ù°íµðºñ »ç¿ëÇϱâ
_6.1 ¸ù°íµðºñ ¼Ò°³
__6.1.1 µ¥ÀÌÅͺ£À̽º ±âº» ¿ë¾î
__6.1.2 ¸ù°íµðºñ Ư¡
_6.2 ¸ù°íµðºñ ¾ÆƲ¶ó½º ¼³Á¤Çϱâ
_6.3 ¸ù°íµðºñ CRUD API ¸¸µé±â
_6.4 ¸ù°íµðºñ ÄÞÆĽº·Î µ¥ÀÌÅÍ È®ÀÎÇϱâ
_6.5 ¸ù±¸½º¸¦ »ç¿ëÇØ CRUD ¸¸µé±â
__6.5.1 ¸ù±¸½º ¼³Ä¡Çϱâ
__6.5.2 ¸ù±¸½º·Î ½ºÅ°¸¶ ¸¸µé±â
__6.5.3 ¸ù±¸½º¿Í ÀͽºÇÁ·¹½º·Î CRUD API ¸¸µé±â
_6.6 REST Ŭ¶óÀ̾ðÆ®·Î API Å×½ºÆ®Çϱâ
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

07Àå ÆäÀÌÁö³×À̼ǵǴ °Ô½ÃÆÇ ¸¸µé±â
_7.1 ÇÁ·ÎÁ§Æ® ±¸Á¶ ¼Ò°³
_7.2 °Ô½ÃÆÇ ÇÁ·ÎÁ§Æ® ¼Â¾÷
__7.2.1 Node.js ÇÁ·ÎÁ§Æ® Ãʱ⠼³Á¤
__7.2.2 ÀͽºÇÁ·¹½º ¼³Ä¡ ¹× ÇÁ·ÎÁ§Æ® µð·ºÅ͸® ±¸Á¶ Àâ±â
__7.2.3 ÇÚµé¹Ù ÅÛÇø´ ¿£Áø ¼³Ä¡ ¹× ¼³Á¤Çϱâ
_7.3 È­¸é ±âȹÇϱâ
__7.3.1 ¸®½ºÆ® È­¸é ±âȹ
__7.3.2 ±Û¾²±â È­¸é ±âȹ
__7.3.3 »ó¼¼ È­¸é ±âȹ
_7.4 UI È­¸é ¸¸µé±â
__7.4.1 ¸®½ºÆ® UI ¸¸µé±â
__7.4.2 ±Û¾²±â UI ¸¸µé±â
__7.4.3 »ó¼¼ÆäÀÌÁö UI ¸¸µé±â
_7.5 API ¸¸µé±â
__7.5.1 ¸ù°íµðºñ ¿¬°áÀ» À§ÇÑ À¯Æ¿¸®Æ¼ ¸¸µé±â
__7.5.2 UI ÆäÀÌÁö¿¡¼­ »ç¿ëÇÒ ÇÚµé¹Ù Ä¿½ºÅÒ ÇïÆÛ ¸¸µé±â
__7.5.3 nodemon ¼³Á¤Çϱâ
__7.5.4 ±Û¾²±â API ¸¸µé±â
__7.5.5 ¸®½ºÆ® API ¸¸µé±â
__7.5.6 »ó¼¼ÆäÀÌÁö API ¸¸µé±â
__7.5.7 ±Û ¼öÁ¤ API
__7.5.8 ±Û »èÁ¦ API
__7.5.9 ´ñ±Û Ãß°¡ API
__7.5.10 ´ñ±Û »èÁ¦ API
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

[·¹º§ 3 NestJS ÇÁ·¹ÀÓ¿öÅ©·Î Á¡ÇÎÇϱâ]

08Àå NestJS ½ÃÀÛÇϱâ
_8.1 ¿Ö NestJS°¡ ÇÊ¿äÇÒ±î?
_8.2 NestJS ¼Ò°³
__8.2.1 ÀͽºÇÁ·¹½º¿Í NestJS ºñ±³Çϱâ
__8.2.2 NestJS µÑ·¯º¸±â
_8.3 NestJS ¼³Ä¡ÇÏ°í ½ÇÇàÇϱâ
__8.3.1 ÀÇÁ¸¼º ÆÐÅ°Áö ¼³Ä¡Çϱâ
__8.3.2 ŸÀÔ½ºÅ©¸³Æ® ¼³Á¤Çϱâ
__8.3.3 NestJSÀÇ ¸ðµâ°ú ÄÁÆ®·Ñ·¯ ¸¸µé±â
__8.3.4 hello-nest ¾Û ½ÇÇà½ÃÄѺ¸±â
__8.3.5 NestJSÀÇ ³×ÀÌ¹Ö ±ÔÄ¢
_8.4 NestJS·Î À¥ API ¸¸µé±â
__8.4.1 ÇÁ·ÎÁ§Æ® »ý¼º°ú ¼³Á¤
__8.4.2 ÄÁÆ®·Ñ·¯ ¸¸µé±â
__8.4.3 ºí·Î±× API ÀÛ¼ºÇϱâ
__8.4.4 ¸Þ¸ð¸®¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â API ¸¸µé±â
__8.4.5 ÆÄÀÏ¿¡ Á¤º¸¸¦ ÀúÀåÇϵµ·Ï API ¾÷±×·¹À̵åÇϱâ
_8.5 ÀÇÁ¸¼º ÁÖÀÔÇϱâ
_8.6 ¸ù°íµðºñ ¿¬µ¿Çϱâ
__8.6.1 ÀÇÁ¸¼º ¼³Ä¡
__8.6.2 ½ºÅ°¸¶ ¸¸µé±â
__8.6.3 ¸ù°íµðºñ¸¦ »ç¿ëÇÏ´Â ¸®Æ÷ÁöÅ丮 Ãß°¡Çϱâ
__8.6.4 ¼­ºñ½º ÄÚµå º¯°æ
__8.6.5 ¸ðµâ¿¡ ¸ù°í µðºñ ¼³Á¤°ú ÇÁ·Î¹ÙÀÌ´õ ¼³Á¤ Ãß°¡Çϱâ
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

09Àå NestJS ȯ°æ º¯¼ö ¼³Á¤Çϱâ
_9.1 ȯ°æ º¯¼ö ¼Ò°³
_9.2 ÇÁ·ÎÁ§Æ® »ý¼º ¹× ¼³Á¤Çϱâ
_9.3 NestJS ¼³Á¤ ¹× Å×½ºÆ®Çϱâ
__9.3.1 app.module.ts¿¡ ConfigModule ¼³Á¤Çϱâ
__9.3.2 .env ÆÄÀÏ »ý¼ºÇϱâ
__9.3.3 app.controller.ts¿¡ ÄÚµå Ãß°¡Çϱâ
__9.3.4 Å×½ºÆ®Çϱâ
_9.4 ConfigModuleÀ» Àü¿ª ¸ðµâ·Î ¼³Á¤ Çϱâ
__9.4.1 .env¿¡ ȯ°æ º¯¼ö ¼³Á¤Çϱâ
__9.4.2 weather ¸ðµâ ¸¸µé±â
__9.4.3 ³¯¾¾ API Å×½ºÆ®¿ë Çڵ鷯 ÇÔ¼ö·Î Å×½ºÆ®Çϱâ
_9.5 ¿©·¯ ȯ°æ º¯¼ö ÆÄÀÏ »ç¿ëÇϱâ
__9.5.1 ȯ°æº°·Î ¼­¹ö°¡ ±âµ¿µÇµµ·Ï ½ºÅ©¸³Æ® ¼öÁ¤Çϱâ
__9.5.2 local, dev, prod ȯ°æ º¯¼ö »ý¼º
__9.5.3 ȯ°æ º¯¼ö¿¡ µû¶ó¼­ ´Ù¸¥ ȯ°æ º¯¼ö ÆÄÀÏÀ» »ç¿ëÇϵµ·Ï ¼³Á¤ ¼öÁ¤Çϱâ
__9.5.4 Å×½ºÆ®¿ë Çڵ鷯 ÇÔ¼ö·Î Å×½ºÆ®Çϱâ
_9.6 Ä¿½ºÅÒ È¯°æ ¼³Á¤ ÆÄÀÏ »ç¿ëÇϱâ
__9.6.1 ȯ°æ º¯¼ö ÆÄÀÏ »ý¼ºÇϱâ
__9.6.2 ConfigModule¿¡ load ¿É¼Ç Ãß°¡Çϱâ
__9.6.3 Ä¿½ºÅÒ È¯°æ º¯¼ö Àбâ Å×½ºÆ®Çϱâ
_9.7 ¼­¹ö ±âµ¿°ú ȯ°æ ¼³Á¤ ÆÄÀÏ ÃʱâÈ­ ¼ø¼­ ¾Ë¾Æº¸±â
_9.8 YAML ÆÄÀÏÀ» »ç¿ëÇØ È¯°æ º¯¼ö ¼³Á¤Çϱâ
__9.8.1 js-yaml ¼³Ä¡Çϱâ
__9.8.2 config.yaml ÆÄÀÏ »ý¼ºÇϱâ
__9.8.3 config.ts ¼öÁ¤Çϱâ
__9.8.4 Å×½ºÆ®¿ë Çڵ鷯 ÇÔ¼ö·Î Å×½ºÆ®Çϱâ
_9.9 ij½Ã ¿É¼Ç »ç¿ëÇϱâ
_9.10 È®Àå º¯¼ö »ç¿ëÇϱâ
__9.10.1 È®Àå º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô Ãß°¡ ¼³Á¤Çϱâ
__9.10.2 Å×½ºÆ®¿ë Çڵ鷯 ÇÔ¼ö·Î Å×½ºÆ®Çϱâ
_9.11 main.ts¿¡¼­ ȯ°æ º¯¼ö »ç¿ëÇϱâ
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

10Àå ȸ¿ø °¡ÀÔ°ú ÀÎÁõÇϱâ
_10.1 ½Ç½À¿ë ÇÁ·ÎÁ§Æ® ¼³Á¤Çϱâ
__10.1.1 nest-cli·Î ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ
__10.1.2 User ¸ðµâ »ý¼ºÇϱâ
__10.1.3 SQLite µ¥ÀÌÅͺ£À̽º ¼³Á¤Çϱâ
_10.2 À¯Àú ¸ðµâÀÇ ¿£Æ¼Æ¼, ¼­ºñ½º, ÄÁÆ®·Ñ·¯ »ý¼ºÇϱâ
__10.2.1 ¿£Æ¼Æ¼ ¸¸µé±â
__10.2.2 ÄÁÆ®·Ñ·¯ ¸¸µé±â
__10.2.3 ¼­ºñ½º ¸¸µé±â
__10.2.4 Å×½ºÆ®Çϱâ
_10.3 ÆÄÀÌÇÁ·Î À¯È¿¼º °ËÁõÇϱâ
__10.3.1 Àü¿ª ValidationPipe ¼³Á¤Çϱâ
__10.3.2 UserDto ¸¸µé±â
__10.3.3 Å×½ºÆ®Çϱâ
_10.4 ÀÎÁõ ¸ðµâ »ý¼º ¹× ȸ¿ø °¡ÀÔÇϱâ
__10.4.1 ÀÎÁõ ¸ðµâ ¸¸µé±â ¹× ¼³Á¤Çϱâ
__10.4.2 ȸ¿ø °¡ÀÔ ¸Þ¼­µå ¸¸µé±â
__10.4.3 sqlite ÀͽºÅÙ¼ÇÀ¸·Î Å×À̺í È®ÀÎÇϱâ
_10.5 ÄíÅ°¸¦ »ç¿ëÇÑ ÀÎÁõ ±¸ÇöÇϱâ
__10.5.1 AuthService¿¡ À̸ÞÀÏ°ú Æнº¿öµå °ËÁõ ·ÎÁ÷ ¸¸µé±â
__10.5.2 °¡µå¸¦ »ç¿ëÇØ ÀÎÁõµÆ´ÂÁö °Ë»çÇϱâ
_10.6 ÆнºÆ÷Æ®¿Í ¼¼¼ÇÀ» »ç¿ëÇÑ ÀÎÁõ ±¸ÇöÇϱâ
__10.6.1 ¶óÀ̺귯¸® ¼³Ä¡ ¹× ¼³Á¤
__10.6.2 ·Î±×Àΰú ÀÎÁõ¿¡ »ç¿ëÇÒ °¡µå ±¸ÇöÇϱâ
__10.6.3 ¼¼¼Ç¿¡ Á¤º¸¸¦ ÀúÀåÇÏ°í Àд ¼¼¼Ç ½Ã¸®¾ó¶óÀÌÀú ±¸ÇöÇϱâ
__10.6.4 email, password ÀÎÁõ ·ÎÁ÷ÀÌ ÀÖ´Â LocalStrategy ÆÄÀÏ ÀÛ¼ºÇϱâ
__10.6.5 auth.module.ts¿¡ ¼³Á¤ Ãß°¡Çϱâ
__10.6.6 Å×½ºÆ®Çϱâ
__10.6.7 ·Î±×Àΰú ¼¼¼Ç ÀúÀå±îÁö ¼ø¼­
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

11Àå OAuth¸¦ »ç¿ëÇÑ ±¸±Û ·Î±×ÀÎ ÀÎÁõÇϱâ
_11.1 OAuth ¼Ò°³
__11.1.1 OAuth ÇÁ·ÎÅäÄÝ È帧
__11.1.2 ¾×¼¼½º ÅäÅ«À» Àç¹ßÇàÇÏ´Â È帧
_11.2 ±¸±Û OAuth¸¦ »ç¿ëÇϱâ À§ÇÑ ÁغñÇϱâ
__11.2.1 ±¸±Û Ŭ¶ó¿ìµå¿¡¼­ ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ
__11.2.2 OAuth µ¿ÀÇ È­¸éÀ» ¸¸µé±â
__11.2.3 OAuth Ŭ¶óÀ̾ðÆ®ÀÇ ID¿Í ºñ¹Ð¹øÈ£ ¸¸µé±â
_11.3 ±¸±Û OAuth ±¸Çö ¼ø¼­
_11.4 NestJS ȯ°æ ¼³Á¤ ÆÄÀÏ Ãß°¡Çϱâ
_11.5 ±¸±Û OAuth ½ºÆ®·¡Æ¼Áö ¸¸µé±â
_11.6 GoogleAuthGuard ¸¸µé±â
_11.7 ÄÁÆ®·Ñ·¯¿¡ Çڵ鷯 ¸Þ¼­µå Ãß°¡Çϱâ
__11.7.1 Å×½ºÆ®Çϱâ
_11.8 User ¿£Æ¼Æ¼ ÆÄÀÏ ¼öÁ¤Çϱâ
_11.9 UserService¿¡ ±¸±Û À¯Àú °Ë»ö ¹× ÀúÀå ¸Þ¼­µå Ãß°¡Çϱâ
_11.10 GoogleStrategy¿¡ ±¸±Û À¯Àú ÀúÀåÇÏ´Â ¸Þ¼­µå Àû¿ëÇϱâ
_11.11 GoogleAuthGuard¿¡ ¼¼¼ÇÀ» »ç¿ëÇϵµ·Ï º¯°æÇϱâ
_11.12 Å×½ºÆ®Çϱâ
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

12Àå ÆÄÀÏ ¾÷·Îµå ±â´É ±¸ÇöÇϱâ
_12.1 ÇÁ·ÎÁ§Æ® »ý¼º ¹× ÀÇÁ¸¼º ¼³Ä¡Çϱâ
_12.2 ÆÄÀÏ ¾÷·Îµå API¸¦ ¸¸µé°í Å×½ºÆ®Çϱâ
__12.2.1 Å×½ºÆ®Çϱâ
_12.3 ¾÷·ÎµåÇÑ ÆÄÀÏÀ» ƯÁ¤ÇÑ °æ·Î¿¡ ÀúÀåÇϱâ
__12.3.1 Å×½ºÆ®Çϱâ
_12.4 Á¤Àû ÆÄÀÏ ¼­ºñ½ºÇϱâ
__12.4.1 Å×½ºÆ®Çϱâ
_12.5 HTML ÆûÀ¸·Î ¾÷·ÎµåÇϱâ
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

13Àå À¥¼ÒÄÏÀ» »ç¿ëÇÑ ½Ç½Ã°£ äÆà ±¸ÇöÇϱâ
_13.1 À¥¼ÒÄÏ ¼Ò°³
__13.1.1 À¥¼ÒÄÏÀÇ µ¿ÀÛ ¹æ¹ý
_13.2 ¸Þ¾Æ¸® ¾ÖÇø®ÄÉÀÌ¼Ç ¸¸µé±â : À¥¼ÒÄÏ
__13.2.1 ws ÆÐÅ°Áö ¼³Ä¡Çϱâ
__13.2.2 ¼­¹ö Ãø ±¸ÃàÇϱâ : server.js ÆÄÀÏ ÀÛ¼º ¹× ¼­¹ö ±¸µ¿
__13.2.3 Ŭ¶óÀ̾ðÆ® Ãø ±¸ÇöÇϱâ : client.html ÆÄÀÏ ÀÛ¼º
__13.2.4 Å×½ºÆ®Çϱâ
__13.2.5 ÇâÈÄ °úÁ¦ È®ÀÎÇϱâ
_13.3 °£´ÜÇÑ Ã¤Æà ¾ÖÇø®ÄÉÀÌ¼Ç ¸¸µé±â : socket.io
__13.3.1 socket.io ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ
__13.3.2 ÆÐÅ°Áö ¼³Ä¡Çϱâ
__13.3.3 html ÆÄÀÏÀ» ºÒ·¯¿Àµµ·Ï main.ts ¼³Á¤Çϱâ
__13.3.4 ¼­¹ö Ãø ÀÛ¾÷À» À§ÇÑ °ÔÀÌÆ®¿þÀÌ ¸¸µé±â
__13.3.5 °ÔÀÌÆ®¿þÀ̸¦ ¸ðµâ¿¡ µî·ÏÇϱâ
__13.3.6 Ŭ¶óÀ̾ðÆ®¸¦ À§ÇÑ index.html ¼öÁ¤Çϱâ
__13.3.7 Å×½ºÆ®Çϱâ
_13.4 äÆÃ¹æ ±â´ÉÀÌ Àִ äÆà ¾ÖÇø®ÄÉÀÌ¼Ç ¸¸µé±â
__13.4.1 ³×ÀÓ½ºÆäÀ̽º »ç¿ëÇϱâ
__13.4.2 ´Ð³×ÀÓ Ãß°¡Çϱâ
__13.4.3 äÆÃ¹æ »ý¼ºÇϱâ
__13.4.4 °øÁö ¿µ¿ª°ú äÆùæ ÀÔÀå ±¸ÇöÇϱâ
__13.4.5 äÆù濡¼­ ´ëÈ­ ³ª´©±â ±¸ÇöÇϱâ
__13.4.6 Å×½ºÆ®Çϱâ
_ÇнÀ ¸¶¹«¸®
_¿¬½À¹®Á¦

appendix A ŸÀÔ½ºÅ©¸³Æ® ÀÔ¹®¿¡¼­ °í±Þ ±â´É±îÁö
appendix B ²À ¾Ë¾Æ¾ß ÇÏ´Â ¸®´ª½º ¸í·É¾î 21°³