|
|
|
RESTful ÀÚ¹Ù ÆÐÅÏ°ú ½ÇÀü ÀÀ¿ë : °í¼º´É RESTful ¼ºñ½º Á¦ÀÛÀ» À§ÇÑ º£½ºÆ® ÇÁ·¢Æ¼½º
|
|
|
acorn PACKT1
¤Ó ¹ÙũƼ ¸ÞŸ(Bhakti Mehta), ÀÌÀÏ¿õ
¤Ó
¿¡ÀÌÄÜÃâÆÇ
¤Ó
RESTful Java Patterns and Best Practices
|
|
|
|
- Á¦ÈÞ¸ô ÁÖ¹® ½Ã °í°´º¸»ó, ÀϺΠÀ̺¥Æ® Âü¿© ¹× ÁõÁ¤Ç° ÁõÁ¤, ÇÏ·ç/´çÀÏ ¹è¼Û¿¡¼ Á¦¿ÜµÇ¹Ç·Î Âü°í ¹Ù¶ø´Ï´Ù.
-
-
-
[RESTful ÀÚ¹Ù ÆÐÅÏ°ú ½ÇÀü ÀÀ¿ë]Àº REST¿¡ °üÇÏ¿© ±âÃÊ ¿ø¸®ºÎÅÍ ½Ç¹«ÀûÀÎ ¿¹Á¦ ÄÚµå±îÁö Â÷·Ê·Î ¼³¸íÇÏ°í, ÇöÀå¿¡¼ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼³°è/°³¹ßÇÏ´Â ½Ç¹«Àڵ鿡°Ô µµ¿òÀÌ µÉ ¸¸ÇÑ º£½ºÆ® ÇÁ·¢Æ¼½º¸¦ Á¦½ÃÇÑ Ã¥ÀÌ´Ù. Ã¥¿¡¼´Â JAX-RS 2.0 API¸¦ ÀÌ¿ëÇÏ¿© RESTful À¥ ¼ºñ½º¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ý, ij½Ì ±â¹ý, °ËÁõ, »ç¿ë·® Á¦ÇÑ, ºñµ¿±â ó¸®, ±âŸ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀÀ´ä¼º Á¦°í¸¦ À§ÇÑ º£½ºÆ® ÇÁ·¢Æ¼½º ÇнÀ, RESTÀÇ ¹Ì·¡, ÁøÈÇϴ ǥÁØ ¸í¼¼, ±×¸®°í À¯¸í ±â¾÷µéÀÇ REST ½ÇÁ¦ Àû¿ë »ç·Ê ¿¬±¸ µîÀ» ´Ù·ç°í ÀÖ´Ù.
-
-
¡Ú ¿ä¾à ¡Ú
ÆäÀ̽ººÏ, Æ®À§ÅÍ µî À¯¸í SNS ¼ºñ½º¿¡¼ ÀÌ¹Ì ¿À·¡ Àü¿¡ µµÀԵǾî ÀϹÝÈµÈ RESTful ¼ºñ½º. ÀÌ Ã¥Àº REST¿¡ °üÇÏ¿© ±âÃÊ ¿ø¸®ºÎÅÍ ½Ç¹«ÀûÀÎ ¿¹Á¦ ÄÚµå±îÁö Â÷·Ê·Î ¼³¸íÇÏ°í, ÇöÀå¿¡¼ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼³°è/°³¹ßÇÏ´Â ½Ç¹«Àڵ鿡°Ô Å« µµ¿òÀÌ µÉ ¸¸ÇÑ º£½ºÆ® ÇÁ·¢Æ¼½º¸¦ Á¦½ÃÇÑ´Ù. RESTful ¼ºñ½º¿¡ °ü½ÉÀÖ´Â ¾ÆÅ°ÅØÆ®, °³¹ßÀÚ, ±×¸®°í À¥ÀÇ ±âº»±â¸¦ ´ÙÁö°íÀÚ ÇÏ´Â ¸ðµç µ¶ÀÚ¿¡°Ô ÃßõÇÒ ¸¸ÇÑ µµ¼´Ù.
¡Ú ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë ¡Ú
¡á JAX-RS 2.0 API¸¦ ÀÌ¿ëÇÏ¿© RESTful À¥ ¼ºñ½º¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ý
¡á RESTful ¼ºñ½º °üÁ¡¿¡¼ OAuth¿Í º¸¾È °ü·Ã °í±Þ Áö½Ä ½Àµæ
¡á ij½Ì ±â¹ý, °ËÁõ, »ç¿ë·® Á¦ÇÑ, ºñµ¿±â ó¸®, ±âŸ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀÀ´ä¼º Á¦°í¸¦ À§ÇÑ º£½ºÆ® ÇÁ·¢Æ¼½º ÇнÀ
¡á RESTful ¼ºñ½ºÀÇ ÆäÀÌÁö³×À̼Ç, ¹®¼È, Å×½ºÆÿ¡ °üÇÑ º£½ºÆ® ÇÁ·¢Æ¼½º
¡á RESTful ¼ºñ½º¸¦ ÀÌ¿ëÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç ÀÛ¼º ½Ã ¾Ë¾ÆµÎ¾î¾ß ÇÒ HATEOAS¿Í ¸¶ÀÌÅ©·Î ¾ÆÅ°ÅØó
¡á RESTÀÇ ¹Ì·¡, ÁøÈÇϴ ǥÁØ ¸í¼¼, ±×¸®°í À¯¸í ±â¾÷µéÀÇ REST ½ÇÁ¦ Àû¿ë »ç·Ê ¿¬±¸
¡á À¥ÈÅ(WebHook), À¥¼ÒÄÏ(WebSocket), SSE µî ½Ç½Ã°£ µ¥ÀÌÅ͸¦ Ŭ¶óÀ̾ðÆ®¿¡°Ô Àü´ÞÇϱâ À§ÇÑ ±â¼ú °£ÀÇ ºñ±³ °íÂû
¡Ú ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¡Ú
RESTful ¼ºñ½º¸¦ ÀÛ¼ºÇÏ¿© »ý»ê¼ºÀ» Çâ»óÇϱ⸦ ¹Ù¶ó´Â ÃÊ½É °³¹ßÀÚ°¡ ±âº»ÀûÀÎ ½Ä°ßÀ» ½×±â À§ÇØ Àо ÁÁ°í, º¹ÀâÇÏ°í ¾î·Á¿î ÁÖÁ¦¸¦ ij±â ÁÁ¾ÆÇÏ´Â ¼÷·ÃµÈ °³¹ßÀÚ¿¡°Ôµµ Å« µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
¡Ú ÀÌ Ã¥ÀÇ ±¸¼º ¡Ú
1Àå. ¡®REST: Å»ýÀÇ ±â¿ø¡¯¿¡¼´Â RESTÀÇ ±âº» °³³äºÎÅÍ RESTful ¼ºñ½º¸¦ ¼³°èÇÏ´Â ¹æ¹ý°ú °ü·Ã º£½ºÆ® ÇÁ·¢Æ¼½º¸¦ »ìÆ캻´Ù. ÀÚ¹Ù ¾ð¾î·Î RESTful ¼ºñ½º¸¦ ÀÛ¼ºÇϱâ À§ÇÑ JAX-RS 2.0 API¿¡ ´ëÇؼ ´Ù·é´Ù.
2Àå. ¡®¸®¼Ò½º ¼³°è¡¯¿¡¼´Â ´Ù¾çÇÑ ¿äû/ÀÀ´ä ÆÐÅÏ°ú ÄÜÅÙÃ÷ Çù»ó, ¸®¼Ò½º ¹öÀú´×, REST ÀÀ´ä ÄÚµå µîÀ» »ìÆ캻´Ù.
3Àå. ¡®º¸¾È°ú ÃßÀû¼º¡¯¿¡¼´Â REST APIÀÇ º¸¾È°ú ÃßÀû¼ºÀ̶ó´Â ½±Áö ¾ÊÀº ¹®Á¦¿Í °ü·ÃµÈ Á¢±Ù ÅëÁ¦, OAuth ÀÎÁõ, ¿¡·¯ ó¸®, °¨»ç¿Í °ËÁõ ÆÐÅÏ µî¿¡ ´ëÇØ ¾Ë¾Æº»´Ù.
4Àå. ¡®¼º´ÉÀ» °í·ÁÇÑ ¼³°è¡¯¿¡¼´Â ¼º´É°ú °ü·ÃµÈ ¼³°è ¿øÄ¢À» ´Ù·é´Ù. ij½Ì ¿ø¸®¿Í, REST¿¡¼ ºñµ¿±â ÀÛ¾÷°ú ½ÇÇà ½Ã°£ÀÌ ¿À·¡ °É¸®´Â ÀÛ¾÷À» ¾î¶»°Ô ó¸®ÇÒ °ÍÀÎÁö ¼³¸íÇÏ°í, ÆÐÄ¡¸¦ ÀÌ¿ëÇÏ¿© ºÎºÐ ¾÷µ¥ÀÌÆ®¸¦ ÇÏ´Â ¹æ¹ýÀ» »ìÆ캻´Ù.
5Àå. ¡®°í±Þ ¼³°è ¿øÄ¢¡¯¿¡¼´Â »ç¿ë·® Á¦ÇÑ, ÀÀ´ä ÆäÀÌÁö³×À̼Ç, ±¹Á¦È/Áö¿ªÈ °°Àº °í±Þ ÁÖÁ¦µéÀ» »ó¼¼ÇÑ ¿¹Á¦ ÄÚµå¿Í ÇÔ²² ¼³¸íÇÑ´Ù. ¶Ç È®Àå °¡´É¼º, HATEOAS, REST ¼ºñ½ºÀÇ Å×½ºÆðú ¹®¼È µî¿¡ ´ëÇؼµµ ¼Ò°³ÇÑ´Ù.
6Àå. ¡®ÃֽŠǥÁØ°ú RESTÀÇ ¹Ì·¡¡¯¿¡¼´Â ½Ç½Ã°£ APIÀÎ À¥ÈÅ(WebHook), À¥¼ÒÄÏ(WebSocket), PuSH, SSE¿¡ ´ëÇØ »ìÆ캸°í ¿©·¯ °¡Áö Ãø¸é¿¡¼ ºñ±³/´ëÁ¶Çغ»´Ù. ±×¸®°í À¥ÈÅÀ̳ª À¥¼ÒÄÏ °°Àº ½Å±â¼úÀÌ ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ½ÇÁ¦·Î ÀÀ¿ëµÇ´Â »ç·Ê¸¦ ¾Ë¾Æº¸°í, ¸¶ÀÌÅ©·Î ¼ºñ½º(micro service)¿¡¼ REST ±â¼úÀÌ ¾î¶² ¿ªÇÒÀ» ´ã´çÇÏ´ÂÁö °£·«È÷ ¼³¸íÇÑ´Ù.
ºÎ·Ï¿¡¼´Â ±êÇãºê(GitHub), Æ®À§ÅÍ(Twitter), ÆäÀ̽ººÏ(Facebook) ¼ºñ½º¿¡ Àû¿ëµÈ ´Ù¾çÇÑ À¯ÇüÀÇ REST API¿¡ ´ëÇØ ¾Ë¾Æº¸°í, ¡®2Àå, ¸®¼Ò½º ¼³°è¡¯ºÎÅÍ ¡®5Àå, °í±Þ ¼³°è ¿øÄ¢¡¯¿¡ °ÉÃÄ ÇнÀÇÑ ³»¿ë°ú ¿¬°üµÇ´Â ºÎºÐµéÀ» ÃÖÁ¾ Á¡°ËÇغ»´Ù.
¡Ú ÀúÀÚ ¼¹® ¡Ú
¼Ò¼È ³×Æ®¿öÅ·, Ŭ¶ó¿ìµå ÄÄÇ»Æðú ¸ð¹ÙÀÏ ¼¼»óÀÌ Çѵ¥ ¾î¿ì·¯Á®, ÀÎÅͳÝÀ» ÅëÇØ REST ¹æ½Ä
À¸·Î ¼·Î ´Ù¸¥ ³×Æ®¿öÅ© ÀåÄ¡ °£¿¡ Åë½ÅÀ» °¡´ÉÇÏ°Ô ÇØÁÖ´Â »õ·Î¿î ±â¼úµéÀÌ º¿¹°Ã³·³ ½ñ¾ÆÁö°í ÀÖ´Ù. REST´Â ¹«»óżº, È®ÀåÀÇ ¿ëÀÌÇÔ, °¡½Ã¼º, ½Å·Ú¼ºÀÇ Æ¯Â¡°ú ´Ù±¹¾î Ç÷§ÆûÀ¸·Î¼ÀÇ ÀåÁ¡À» °í·ç °®Ãá ±â¼úÀÌ´Ù.
ÀÌ Ã¥Àº ¿©·¯ºÐÀÌ ½Ç¹« ÇöÀå...¿¡¼ ÇÚµåºÏÀ¸·Î ÂüÁ¶ÇÏ¸é¼ RESTful ¼ºñ½ºÀÇ ÁøÁ¤ÇÑ À§·ÂÀ» ½ÊºÐ ¹ßÈÖÇÒ ¼ö ÀÖµµ·Ï ¸íÄèÇÏ°í ½Ç¿ëÀûÀÎ Á¤º¸¸¦ Á¦°øÇÏ´Â µ¿½Ã¿¡, ¿©·¯ºÐÀÌ °³¹ßÇÏ·Á´Â ¾ÖÇø®ÄÉÀ̼ǿ¡ Àû¿ëÇغ¼ ¼ö ÀÖ´Â ±âÃÊ ¾È³» ¼ÀûÀÌ µÇ¾îÁÙ °ÍÀÌ´Ù. ÆäÀ̽ººÏ, Æ®À§ÅÍ, ±êÇãºê, ÆäÀÌÆÈ µî À¯¸í Ç÷§ÆûÀÇ API¸¦ ¼·Î ºñ±³Çغ¸¸é¼ RESTful ¼ºñ½ºÀÇ Èï¹ÌÁøÁøÇÑ ´É·ÂÀ» ¼Ò°³ÇÏ°í, ¿©¼¸ °³ Àå¿¡ °ÉÃÄ Ç³ºÎÇÑ ¿¹Á¦ ÄÚµå¿Í °¢Á¾ ÆÁÀ» ¼³¸íÇÏ¸é¼ ¿©·¯ºÐÀ» ¹«ÇÑÇÑ °¡´É¼ºÀÇ ¼¼°è·Î ¾È³»ÇÑ´Ù.
ÀÌ Ã¥À» ¸ðµÎ ÀÐÀ» ¶§ ÂëÀ̸é, µ¶ÀÚ ¿©·¯ºÐÀº ÀÌ Ã¥¿¡¼ ¹è¿î º£½ºÆ® ÇÁ·¢Æ¼½º¸¦ ±âº»À¸·Î ¼º°øÀûÀÎ RESTful ¼ºñ½º¸¦ ¼³°èÇÏ°í ±¸ÇöÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù!
¡Ú ¿Å±äÀÌÀÇ ¸» ¡Ú
´Ù¸¥ IT ºÐ¾ßµµ ¸¶Âù°¡Áö°ÚÁö¸¸, À¥ °³¹ßÀÚ´Â ¾Ë°í ÀÖ¾î¾ß ÇÒ °ÍµéÀÌ ¸Å¿ì ¸¹½À´Ï´Ù. ±×·¯³ª ¿ª½Ã °¡Àå Áß¿äÇÑ °ÍÀº ±âº»ÀÌ°í, ±âº»±â¸¸ źźÇÏ´Ù¸é ¾î¶² »õ·Î¿î ±â¼úÀÌ µîÀåÇÏ´õ¶óµµ À̸¦ ¼ÒÈÇس»´Â µ¥ ¹«¸®°¡ ¾øÀ» °ÍÀÔ´Ï´Ù.
ÀÌ Ã¥Àº ±×·± Á¡¿¡¼ À¥ °³¹ßÀڷμ ¹Ýµå½Ã ¾Ë¾Æ¾ß ÇÒ HTTPÀÇ ±âº»¿¡¼ Ãâ¹ßÇØ ºñ±³Àû ÃÖ±Ù¿¡ µîÀåÇÑ ±â¼ú¿¡ À̸£±â±îÁö ¾ËÂù ³»¿ëµéÀÌ »©°îÈ÷ ´ã°Ü ÀÖ½À´Ï´Ù. ºÐ·®»ó ¸ðµç ÁÖÁ¦¸¦ ¼¼¼¼È÷ ´Ù·çÁö´Â ¾ÊÁö¸¸, µ¶ÀÚ ¿©·¯ºÐµéÀÌ ÀÌ Ã¥À» ÀÐ°í ³ ´ÙÀ½¿¡ ÇнÀÇØ¾ß ÇÒ ¹æÇâÀ» Àâ´Â µ¥ Á¦°ÝÀÌ°í, ÇöÀå °æÇèÀÌ Ç³ºÎÇÑ °í±Þ °³¹ßÀڵ鵵 ÇÑ ¹øÂë µÇ»õ°Ü º¼ ¸¸ÇÑ ³»¿ëÀÌ ¸¹½À´Ï´Ù.
RESTful, Áï ¡®REST´ä°Ô À¥À» °³¹ßÇÏÀÚ¡¯´Â ¸»ÀÌ »ç½Ç À¥ÀÌ ÀÛµ¿ÇÏ´Â Åä´ëÀÎ HTTP ÇÁ·ÎÅäÄÝÀÇ ±âº»¿¡ Ãæ½ÇÇÏÀÚ´Â °ÍÀÌ°í, »õ·Î¿î ±â¼úÀ» Ãß°¡Çϰųª µ¡ºÙÀÌ´Â ÇàÀ§°¡ ¾Æ´Ñ, ¿ÀÈ÷·Á À¥ÀÌ Åº»ýÇÒ ´ç½ÃÀÇ Àǵµ¸¦ µÇ»ì·Áº¸ÀÚ´Â Àǹ̶ó°í »ý°¢ÇÕ´Ï´Ù.
REST¶ó´Â ¸»À» óÀ½ ¾´ ·ÎÀÌ Çʵù(Roy Fielding) ¹Ú»ç°¡ 1999³â ¹ßÇ¥µÈ HTTP 1.1 ÇÁ·ÎÅäÄÝ¿¡ °üÇÑ ¸í¼¼¼, RFC 2616ÀÇ ÁÖ¿ä ÇÊÀÚ Áß ÇÑ »ç¶÷ÀÓÀ» »ó±âÇÏ¸é ±×¸® ³î¶ö ¸¸ÇÑ Àϵµ ¾Æ´Õ´Ï´Ù. ¿©·¯ºÐÀÌ ¾ÆÁ÷±îÁö HTTP ¸í¼¼¿¡ GET, POST ¸»°íµµ ´Ù¸¥ ¸Þ¼Òµå°¡ ÀÖ´Ù´Â ¸»À» µé¾îº» Àûµµ, »ç¿ëÇغ» Àûµµ ¾ø´Â °³¹ßÀÚ¶ó¸é ÀÌ Ã¥Àº À¥¿¡ °üÇÑ ÀüÇô »õ·Î¿î ÁöÆòÀ» ¿¾îÁÙ °ÍÀ̶ó È®½ÅÇÕ´Ï´Ù.
-
-
1Àå REST: Å»ýÀÇ ±â¿ø
__REST °³¿ä
____REST¿Í ¹«»óżº
__¸®Â÷µå½¼ ¼º¼÷µµ ¸ðµ¨
____·¹º§ 0: ¿ø°Ý ÇÁ·Î½ÃÀú È£Ãâ
____·¹º§ 1: REST ¸®¼Ò½º
____·¹º§ 2: Ãß°¡ HTTP ¸Þ¼Òµå
____·¹º§ 3: HATEOAS
__¾ÈÀü°ú ¸èµî¼º
____¾ÈÀüÇÑ ¸Þ¼Òµå
____¸èµîÇÑ ¸Þ¼Òµå
__RESTful ¼ºñ½ºÀÇ ¼³°è ¿øÄ¢
____¸®¼Ò½º URI °áÁ¤
____¸®¼Ò½º ¸Þ¼Òµå °áÁ¤
______HTTP ¸Þ¼Òµå¿Í REST
______PUT°ú POSTÀÇ Â÷ÀÌ
__¸®¼Ò½º Ç¥ÇöÇü °áÁ¤
____API ±¸Çö
______ÀÚ¹Ù RESTful ¼ºñ½º API(JAX-RS)
____RESTful ¼ºñ½º ¹èÆ÷
____RESTful ¼ºñ½º Å×½ºÆÃ
______JAX-RS 2.0 Ŭ¶óÀ̾ðÆ® API
______RESTful ¸®¼Ò½º Á¢±Ù
__¸®¼Ò½º ¼³°è¿¡ °üÇÑ º£½ºÆ® ÇÁ·¢Æ¼½º
__Âü°í ÀÚ·á
__Á¤¸®
2Àå ¸®¼Ò½º ¼³°è
__REST ¸®¼Ò½º ÆÐÅÏ
__ÄÜÅÙÃ÷ Çù»ó
____HTTP Çì´õ¸¦ ÀÌ¿ëÇÑ ÄÜÅÙÃ÷ Çù»ó
____URL ÆÐÅÏÀ» ÀÌ¿ëÇÑ ÄÜÅÙÃ÷ Çù»ó
__¿£Æ¼Æ¼ Á¦°øÀÚ¿Í ¿©·¯ °¡Áö Ç¥ÇöÇü
____StreamingOutput
____ChunkedOutput
____ÀúÁö¿Í JSON
______POJO ±â¹ÝÀÇ JSON ¹ÙÀεù
______JAXB ±â¹ÝÀÇ JSON ¹ÙÀεù
______Àú¼öÁØÀÇ JSON ÆĽ̰ú ó¸® Áö¿ø
__API ¹öÀú´×
____URI¿¡ ¹öÀü ÁöÁ¤
____¿äû Äõ¸® ÆĶó¹ÌÅÍ¿¡ ¹öÀü ...ÁöÁ¤
____Accept Çì´õ¿¡ ¹öÀü ÁöÁ¤
__ÀÀ´ä ÄÚµå¿Í REST ÆÐÅÏ
__Âü°í ÀÚ·á
__Á¤¸®
3Àå º¸¾È°ú ÃßÀû¼º
__REST API ·Î±ë
____REST API ·Î±ë¿¡ °üÇÑ º£½ºÆ® ÇÁ·¢Æ¼½º
______¿©·¯ ¼ºñ½º¿¡ °ÉÃÄ »ó¼¼ÇÏ°í ÀÏ°üµÈ ÆÐÅÏÀÇ ·Î±×¸¦ ¼öÁý
______¹Î°¨ÇÑ µ¥ÀÌÅ͸¦ ¼û±è
______ÃÖÃÊ È£ÃâÀÚ¸¦ ·Î±ë
______±âº»ÀûÀ¸·Î ÆäÀ̷εå´Â ·Î±ë ¾È ÇÔ
______¿äû °ü·Ã ¸ÞŸÁ¤º¸ ·Î±ë
______·Î±ë ½Ã½ºÅÛÀ» ¸ð´ÏÅ͸µ ½Ã½ºÅÛ°ú ¿¬°è
__RESTful ¼ºñ½º °ËÁõ
____°ËÁõ ¿¹¿Ü ó¸® ¹× ÀÀ´ä ÄÚµå
__RESTful ¼ºñ½ºÀÇ ¿¹¿Ü ó¸®
__ÀÎÁõ°ú Àΰ¡
____ÀÎÁõÀÇ ÀǹÌ
______SAML
____Àΰ¡ÀÇ ÀǹÌ
______OAuth
____OAuth 1.0°ú 2.0ÀÇ Â÷ÀÌ
______±ÇÇÑ ½ÂÀÎ
____¸®ÇÁ·¹½Ã ÅäÅ«°ú ¾×¼¼½º ÅäÅ«
______ÀúÁö¿Í OAuth 2.0
____OAuth¿¡ °üÇÑ REST API º£½ºÆ® ÇÁ·¢Æ¼½º
______¾×¼¼½º ÅäÅ« ¼ö¸í Á¦ÇÑ
______Àΰ¡ ¼¹ö¿¡¼ ¸®ÇÁ·¹½Ã ÅäÅ«À» Á¦°ø
______SSL°ú ¾ÏÈ£È Àû¿ë
____¿ÀǾÆÀ̵ð Á¢¼Ó
__REST ¾ÆÅ°ÅØó ÄÄÆ÷³ÍÆ®
__Âü°í ÀÚ·á
__Á¤¸®
4Àå ¼º´ÉÀ» °í·ÁÇÑ ¼³°è
__ij½ÌÀÇ ¿ø¸®
____ij½Ì »ó¼¼
____ij½Ì Çì´õÀÇ Á¾·ù
______°ÇÑ Ä³½Ì Çì´õ
______¾àÇÑ Ä³½Ì Çì´õ
______Expires¿Í Cache-Control - max-age
____Cache-Control Çì´õ¿Í Áö½Ã¾î
______Last-Modified¿Í ETag
____Cache-Control Çì´õ¿Í REST API
____ETags
______ETags Çì´õÀÇ ÀÛµ¿ ¿ø¸®
______ETags Çì´õ¿Í REST API
______ETagsÀÇ Á¾·ù
____ÆäÀ̽ººÏ REST API¿Í ETags
______RESTEasy¿Í ij½Ì
__REST¿¡¼ ºñµ¿±â ÀÛ¾÷ ¹× ½ÇÇà ½Ã°£ÀÌ ±ä ÀÛ¾÷
____ºñµ¿±â ¿äû/ÀÀ´ä ÇÁ·Î¼¼½º
__ºñµ¿±â ¸®¼Ò½º¿¡ °üÇÑ º£½ºÆ® ÇÁ·¢Æ¼½º
____202 Accepted ¸Þ½ÃÁö Àü¼Û
____Å¥¿¡ ´ë±â ÁßÀÎ °´Ã¼ÀÇ ¸¸·á ½Ã°¢ ¼³Á¤
____¸Þ½ÃÁö Å¥¸¦ ÀÌ¿ëÇÑ ºñµ¿±â ó¸®
__HTTP ÆÐÄ¡¿Í ºÎºÐ ¾÷µ¥ÀÌÆ®
__JSON ÆÐÄ¡
__Âü°í ÀÚ·á
__Á¤¸®
5Àå °í±Þ ¼³°è ¿øÄ¢
__»ç¿ë·® Á¦ÇÑ ÆÐÅÏ
____ÇÁ·ÎÁ§Æ® ·¹À̾ƿô
____»ó¼¼ ÄÚµå º¸±â
____»ç¿ë·® Çѵµ¸¦ ÃÊ°úÇÏÁö ¾Ê±â À§ÇÑ º£½ºÆ® ÇÁ·¢Æ¼½º
______ij½Ì
______¹Ýº¹ÀûÀΠȣÃâÀ» ÇÇÇ϶ó
______¿äûÀ» ·Î±ëÇ϶ó
______Æú¸µÀ» ÇÇÇ϶ó
______½ºÆ®¸®¹Ö API Áö¿ø
__ÀÀ´ä ÆäÀÌÁö³×À̼Ç
____ÆäÀÌÁö³×ÀÌ¼Ç À¯Çü
______¿ÀÇÁ¼Â ÆäÀÌÁö³×À̼Ç
______±â°£ ÆäÀÌÁö³×À̼Ç
______Ä¿¼ ÆäÀÌÁö³×À̼Ç
____ÇÁ·ÎÁ§Æ® ·¹À̾ƿô
__±¹Á¦È¿Í Áö¿ªÈ
__Miscellaneous topics(¹Ì¹ø¿ª)
____HATEOAS
____ÆäÀÌÆÈ REST API¿Í HATEOAS
____REST¿Í È®À强
____REST API °ü·Ã ±âŸ »çÇ×
____RESTful ¼ºñ½º Å×½ºÆÃ
______RESTful ¼ºñ½º ¹®¼È
__Âü°í ÀÚ·á
__Á¤¸®
6Àå ÃֽŠǥÁØ°ú RESTÀÇ ¹Ì·¡
__½Ç½Ã°£ API
__Æú¸µ
____Ǫ½Ã ¸ðµ¨: PubSubHubbub
____½ºÆ®¸®¹Ö ¸ðµ¨
______SSE
______SSE¿Í ÀÚ¹Ù½ºÅ©¸³Æ®
______SSE¿Í Jersey
__À¥ÈÅ
____À¥¼ÒÄÏ
__±âŸ ½Ç½Ã°£ Áö¿ø API
____XMPP 109
____BOSH over XMPP
__À¥ÈÅ, À¥¼ÒÄÏ, SSE ºñ±³
__REST¿Í ¸¶ÀÌÅ©·Î ¼ºñ½º
____´Ü¼ø¼º
____¹®Á¦µéÀ» ºÐ¸®
____È®Àå¿Í Ãà¼Ò
____´É·ÂÀ» ¸íÈ®ÇÏ°Ô ºÐ¸®
____ÇÁ·Î±×·¡¹Ö ¾ð¾î µ¶¸³
__Âü°í ÀÚ·á
__Á¤¸®
ºÎ·Ï
_±êÇãºê REST API °³¿ä
_ÆäÀ̽ººÏ ±×·¡ÇÁ API °³¿ä
_Æ®À§ÅÍ REST API °³¿ä
¿Å±äÀÌ ±â°í¹®
_³ÝºóÁî ¼³Ä¡¿Í »ç¿ë¹ý
-
-
|
¹ÙũƼ ¸ÞŸ(Bhakti Mehta) [Àú]
|
|
-
2013³â ¹ß°£µÈ [Developing RESTful Services with JAX-RS 2.0, WebSockets, and JSON(JAX-RS 2.0, À¥¼ÒÄÏ, JSONÀ¸·Î RESTful ¼ºñ½º °³¹ßÇϱâ)](ÆÑÆ® ÃâÆÇ»ç)ÀÇ ÀúÀÚ´Ù. 13³â ÀÌ»ó ÀÚ¹Ù EE ¹× °ü·Ã ±â¼ú ±â¹ÝÀÇ ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÚ, ¼³°èÀÚ, ¾ÆÅ°ÅØÆ® ¾÷¹«¸¦ ¼öÇàÇß´Ù. ¿ÀÇ ¼Ò½º ¼ÒÇÁÆ®¿þ¾î °³¹ß¿¡ ¿Á¤ÀûÀÎ ±×³à´Â ±Û·¡½ºÇǽÃ(GlassFish) ¿ÀÇ ¼Ò½º ¾ÖÇø®ÄÉÀÌ¼Ç ¼¹öÀÇ Ãʱâ ÇÁ·ÎÁ§Æ® ¸â¹ö Áß ÇÑ ¸íÀÌ´Ù.
ÄÄÇ»ÅÍ °øÇÐ Çлç/¼®»ç ÇÐÀ§¸¦ ÃëµæÇßÀ¸¸ç, ÁÖ¿ä ¿¬±¸ ºÐ¾ß´Â ¼¹ö »çÀÌµå ±â¼ú, À¥ ¼ºñ½º, Ŭ¶ó¿ìµå ¾ÖÇø®ÄÉÀ̼ÇÀÇ È¸º¹·Â, È®À强, ¾ÈÁ¤¼º, ¼º´ÉÀ» À§ÇÑ ¾ÆÅ°ÅØó´Ù. ÇöÀç ºí·ç Áø ³×Æ®¿öÅ©(Blue Jeans Network) »çÀÇ ¼ö¼® ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾îÀÌ°í, ISV ÆÄÆ®³Ê¿Í °³¹ßÀÚ Ä¿¹Â´ÏƼ¿¡¼ »ç¿ë °¡´ÉÇÑ RESTful ¼ºñ½ºÀÇ °³¹ß ¾÷¹«¸¦ ¸Ã°í ÀÖÀ¸¸ç, RESTful ¼ºñ½ºÀÇ ¹é¿£µå ÀÎÇÁ¶ó¿Í ¼º´É, È®À强, ¾ÈÁ¤¼º ¹®Á¦¸¦ ´ã´çÇÏ°í ÀÖ´Ù. °¢Á¾ ÄÁÆÛ·±½ºÀÇ »ó½Ã ¿¬¼³ÀÚ·Î È°µ¿Çϸé¼, https://home.java.net°ú Dzone °°Àº Æ÷ÅÐ »çÀÌÆ®¿¡ ¸¹Àº ±â»ç, ºí·Î±×, ±â¼ú ÆÁ µîÀ» ±â°íÇØ¿Ô´Ù. °³ÀÎÀûÀ¸·Î űº¹½Ì, ¿©Çà, µ¶¼¸¦ Áñ°Ü ÇÑ´Ù. Æ®À ÁÖ¼Ò´Â @bhakti_mehta´Ù.
-
|
ÀÌÀÏ¿õ [Àú]
|
|
-
15³â °¡±îÀÌ ÀÚ¹Ù ÇÁ·±Æ®¿£µå/¹é¿£µå °³¹ßÀÚ ¹× AA·Î È°µ¿ÇÏ¸é¼ ´Ù¾çÇÑ ¿£ÅÍÇÁ¶óÀÌÁî ÇÁ·ÎÁ§Æ® ÇöÀåÀ» ´©º ¿Ô´Ù. Áý¿¡¼´Â ¼¼ ¿©ÀÎÀÇ ºÐ¿¡ ³ÑÄ¡´Â »ç¶ûÀ» ¹Þ°í »ç´Â ÇູÇÑ µþ ¹Ùº¸´Ù. 2014³â ÀÌÈÄ·Î ½Ê¼ö ±ÇÀÇ IT Àü¹®¼¸¦ ¹ø¿ªÇÏ¸ç µ¿·á, ÈÄ¹è °³¹ßÀÚµé°ú Áö½Ä, °æÇèÀ» ³ª´©´Â ÀÏ¿¡µµ Èû¾²°í ÀÖ´Ù. ¼ÒÁú°ú ½Ç·ÂÀº ¾øÁö¸¸ ½Ã°£ÀÌ ³ª¸é Ŭ·¡½Ä ÇǾƳë°îÀ» Áñ°Ü ¿¬ÁÖÇÑ´Ù.
-
-
Àüü 0°³ÀÇ ±¸¸ÅÈıⰡ ÀÖ½À´Ï´Ù.
|
ÀÎÅÍÆÄÅ©µµ¼´Â °í°´´ÔÀÇ ´Ü¼ø º¯½É¿¡ ÀÇÇÑ ±³È¯°ú ¹ÝÇ°¿¡ µå´Â ºñ¿ëÀº °í°´´ÔÀÌ ÁöºÒÄÉ µË´Ï´Ù.
´Ü, »óÇ°À̳ª ¼ºñ½º ÀÚüÀÇ ÇÏÀÚ·Î ÀÎÇÑ ±³È¯ ¹× ¹ÝÇ°Àº ¹«·á·Î ¹ÝÇ° µË´Ï´Ù. |
|
±³È¯ ¹× ¹ÝÇ°ÀÌ °¡´ÉÇÑ °æ¿ì |
»óÇ°À» °ø±Þ ¹ÞÀº ³¯·ÎºÎÅÍ 7ÀÏÀ̳» °¡´É
°ø±Þ¹ÞÀ¸½Å »óÇ°ÀÇ ³»¿ëÀÌ Ç¥½Ã, ±¤°í ³»¿ë°ú ´Ù¸£°Å³ª ´Ù¸£°Ô ÀÌÇàµÈ °æ¿ì¿¡´Â °ø±Þ¹ÞÀº ³¯·ÎºÎÅÍ 3°³¿ù À̳», ȤÀº ±×»ç½ÇÀ» ¾Ë°Ô µÈ ³¯ ¶Ç´Â ¾Ë ¼ö ÀÖ¾ú´ø ³¯·ÎºÎÅÍ 30ÀÏ À̳»
»óÇ°¿¡ ¾Æ¹«·± ÇÏÀÚ°¡ ¾ø´Â °æ¿ì ¼ÒºñÀÚÀÇ °í°´º¯½É¿¡ ÀÇÇÑ ±³È¯Àº »óÇ°ÀÇ Æ÷Àå»óÅ µîÀÌ ÀüÇô ¼Õ»óµÇÁö ¾ÊÀº °æ¿ì¿¡ ÇÑÇÏ¿© °¡´É |
|
±³È¯ ¹× ¹ÝÇ°ÀÌ ºÒ°¡´ÉÇÑ °æ¿ì |
±¸¸ÅÈ®Á¤ ÀÌÈÄ(¿ÀǸ¶ÄÏ»óÇ°¿¡ ÇÑÇÔ)
°í°´´ÔÀÇ Ã¥ÀÓ ÀÖ´Â »çÀ¯·Î »óÇ° µîÀÌ ¸ê½Ç ¶Ç´Â ÈÑ¼ÕµÈ °æ¿ì
(´Ü, »óÇ°ÀÇ ³»¿ëÀ» È®ÀÎÇϱâ À§ÇÏ¿© Æ÷Àå µîÀ» ÈѼÕÇÑ °æ¿ì´Â Á¦¿Ü)
½Ã°£ÀÌ Áö³²¿¡ µû¶ó ÀçÆǸŰ¡ °ï¶õÇÒ Á¤µµ·Î ¹°Ç°ÀÇ °¡Ä¡°¡ ¶³¾îÁø °æ¿ì
Æ÷Àå °³ºÀµÇ¾î »óÇ° °¡Ä¡°¡ ÈÑ¼ÕµÈ °æ¿ì |
|
´Ù¹è¼ÛÁöÀÇ °æ¿ì ¹ÝÇ° ȯºÒ |
´Ù¹è¼ÛÁöÀÇ °æ¿ì ´Ù¸¥ Áö¿ªÀÇ ¹ÝÇ°À» µ¿½Ã¿¡ ÁøÇàÇÒ ¼ö ¾ø½À´Ï´Ù.
1°³ Áö¿ªÀÇ ¹ÝÇ°ÀÌ ¿Ï·áµÈ ÈÄ ´Ù¸¥ Áö¿ª ¹ÝÇ°À» ÁøÇàÇÒ ¼ö ÀÖÀ¸¹Ç·Î, ÀÌÁ¡ ¾çÇØÇØ Áֽñ⠹ٶø´Ï´Ù. |
|
Áß°í»óÇ°ÀÇ ±³È¯ |
Áß°í»óÇ°Àº Á¦ÇÑµÈ Àç°í ³»¿¡¼ ÆǸŰ¡ ÀÌ·ç¾îÁö¹Ç·Î, ±³È¯Àº ºÒ°¡´ÉÇÕ´Ï´Ù. |
|
¿ÀǸ¶ÄÏ »óÇ°ÀÇ È¯ºÒ |
¿ÀǸ¶ÄÏ»óÇ°¿¡ ´ëÇÑ Ã¥ÀÓÀº ¿øÄ¢ÀûÀ¸·Î ¾÷ü¿¡°Ô ÀÖÀ¸¹Ç·Î, ±³È¯/¹ÝÇ° Á¢¼ö½Ã ¹Ýµå½Ã ÆǸÅÀÚ¿Í ÇùÀÇ ÈÄ ¹ÝÇ° Á¢¼ö¸¦ ÇϼžßÇϸç, ¹ÝÇ°Á¢¼ö ¾øÀÌ ¹Ý¼ÛÇϰųª, ¿ìÆíÀ¸·Î º¸³¾ °æ¿ì »óÇ° È®ÀÎÀÌ ¾î·Á¿ö ȯºÒÀÌ ºÒ°¡´ÉÇÒ ¼ö ÀÖÀ¸´Ï À¯ÀÇÇϽñ⠹ٶø´Ï´Ù. |
|
|
|
¹è¼Û¿¹Á¤ÀÏ ¾È³» |
ÀÎÅÍÆÄÅ© µµ¼´Â ¸ðµç »óÇ°¿¡ ´ëÇØ ¹è¼Û¿Ï·á¿¹Á¤ÀÏÀ» À¥»çÀÌÆ®¿¡ Ç¥½ÃÇÏ°í ÀÖ½À´Ï´Ù.
|
<ÀÎÅÍÆÄÅ© Á÷¹è¼Û »óÇ°> |
»óÇ°Àº ¿ù~Åä¿äÀÏ ¿ÀÀü 10½Ã ÀÌÀü ÁÖ¹®ºÐ¿¡ ´ëÇÏ¿© ´çÀÏ Ãâ°í/´çÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÏ´Â »óÇ°ÀÔ´Ï´Ù. |
»óÇ°Àº ¼¿ïÁö¿ª/ÆòÀÏ ÁÖ¹®ºÐÀº ´çÀÏ Ãâ°í/ÀÍÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇϸç,
¼¿ï¿ÜÁö¿ª/ÆòÀÏ ÁÖ¹®ºÐÀÇ °æ¿ì´Â ¿ÀÈÄ 6½Ã±îÁö ÁÖ¹®ºÐ¿¡ ´ëÇÏ¿© ÀÍÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÏ´Â »óÇ°ÀÔ´Ï´Ù.
(´Ü, ¿ù¿äÀÏÀº 12½Ã±îÁö ÁÖ¹®¿¡ ÇÑÇÔ)
|
»óÇ°Àº, ÀÔ°í¿¹Á¤ÀÏ(Á¦Ç°Ãâ½ÃÀÏ)+Åùè»ç¹è¼ÛÀÏ(1ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù. |
~
»óÇ°Àº À¯ÅëƯ¼º»ó ÀÎÅÍÆÄÅ©¿¡¼ Àç°í¸¦ º¸À¯ÇÏÁö ¾ÊÀº »óÇ°À¸·Î ÁÖ¹®ÀÏ+±âÁØÃâ°íÀÏ+Åùè»ç¹è¼ÛÀÏ(1ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù.(Åä/°øÈÞÀÏÀº ¹è¼Û±â°£¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.)
¡Ø±âÁØÃâ°íÀÏ:ÀÎÅÍÆÄÅ©°¡ »óÇ°À» ¼ö±ÞÇÏ¿© ¹°·ùâ°í¿¡¼ Æ÷Àå/Ãâ°íÇϱâ±îÁö ¼Ò¿äµÇ´Â ½Ã°£
|
|
<¾÷ü Á÷Á¢¹è¼Û/¿ÀǸ¶ÄÏ »óÇ°> |
~
»óÇ°Àº ¾÷ü°¡ ÁÖ¹®À» È®ÀÎÇÏ°í, Ãâ°íÇϱâ±îÁö °É¸®´Â ½Ã°£ÀÔ´Ï´Ù. ÁÖ¹®ÀÏ+±âÁØÃâ°íÀÏ+Åùè»ç¹è¼ÛÀÏ(2ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù.(Åä/°øÈÞÀÏÀº ¹è¼Û±â°£¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.)
¡Ø5ÀÏÀ̳» Ãâ°í°¡ ½ÃÀÛµÇÁö ¾ÊÀ»½Ã, ¿ÀǸ¶ÄÏ »óÇ°Àº ÀÚµ¿À¸·Î ÁÖ¹®ÀÌ Ãë¼ÒµÇ¸ç, °í°´´Ô²² Ç°Àýº¸»ó±ÝÀ» Áö±ÞÇØ µå¸³´Ï´Ù.
|
|
|
¹è¼Ûºñ ¾È³» |
µµ¼(Áß°íµµ¼ Æ÷ÇÔ)¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 2,000¿ø (1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û) À½¹Ý/DVD¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 1,500¿ø (2¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
ÀâÁö/¸¸È/±âÇÁÆ®¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 2,000¿ø (2¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
µµ¼¿Í À½¹Ý/DVD¸¦ ÇÔ²² ±¸¸ÅÇϽøé : ¹è¼Ûºñ 1,500¿ø 1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
µµ¼¿Í ÀâÁö/¸¸È/±âÇÁÆ®/Áß°íÁ÷¹è¼Û»óÇ°À» ÇÔ²² ±¸¸ÅÇϽøé : 2,000¿ø (1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
¾÷üÁ÷Á¢¹è¼Û»óÇ°À» ±¸¸Å½Ã : ¾÷üº°·Î »óÀÌÇÑ ¹è¼Ûºñ Àû¿ë
* ¼¼Æ®»óÇ°ÀÇ °æ¿ì ºÎºÐÃë¼Ò ½Ã Ãß°¡ ¹è¼Ûºñ°¡ ºÎ°úµÉ ¼ö ÀÖ½À´Ï´Ù.
* ºÏÄ«Æ®¿¡¼ ¹è¼Ûºñ¾ø¾Ö±â ¹öÆ°À» Ŭ¸¯Çϼż, µ¿ÀϾ÷ü»óÇ°À» Á¶±Ý ´õ ±¸¸ÅÇϽøé, ¹è¼Ûºñ¸¦ Àý¾àÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
|
|
Çؿܹè¼Û ¾È³» |
ÀÎÅÍÆÄÅ©µµ¼¿¡¼´Â ±¹³»¿¡¼ ÁÖ¹®ÇϽðųª ÇØ¿Ü¿¡¼ ÁÖ¹®ÇÏ¿© ÇØ¿Ü·Î ¹è¼ÛÀ» ¿øÇÏ½Ç °æ¿ì DHL°ú Ư¾àÀ¸·Î Ã¥Á¤µÈ ¿ä±ÝÇ¥¿¡
ÀÇÇØ °³ÀÎÀÌ ÀÌ¿ëÇÏ´Â °æ¿ìº¸´Ù ¹è¼Û¿ä±ÝÀ» Å©°Ô ³·Ã߸ç DHL(www.dhl.co.kr)·Î Çؿܹè¼Û ¼ºñ½º¸¦ Á¦°øÇÕ´Ï´Ù.
Çؿܹè¼ÛÀº µµ¼/CD/DVD »óÇ°¿¡ ÇÑÇØ ¼ºñ½ºÇÏ°í ÀÖÀ¸¸ç, ´Ù¸¥ »óÇ°À» ºÏÄ«Æ®¿¡ ÇÔ²² ´ãÀ¸½Ç °æ¿ì Çؿܹè¼ÛÀÌ ºÒ°¡ÇÕ´Ï´Ù.
ÇØ¿ÜÁÖ¹®¹è¼Û ¼ºñ½º´Â ÀÎÅÍÆÄÅ© µµ¼ ȸ¿ø °¡ÀÔÀ» Çϼž߸¸ ½Åû °¡´ÉÇÕ´Ï´Ù. |
|
¾Ë¾ÆµÎ¼¼¿ä!!! |
µµ¸Å»ó ¹× Á¦ÀÛ»ç »çÁ¤¿¡ µû¶ó Ç°Àý/ÀýÆÇ µîÀÇ »çÀ¯·Î Ãë¼ÒµÉ ¼ö ÀÖ½À´Ï´Ù.
¿ÀǸ¶ÄϾ÷üÀÇ ¹è¼ÛÁö¿¬½Ã ÁÖ¹®ÀÌ ÀÚµ¿À¸·Î Ãë¼ÒµÉ ¼ö ÀÖ½À´Ï´Ù.
Ãâ°í°¡´É ½Ã°£ÀÌ ¼·Î ´Ù¸¥ »óÇ°À» ÇÔ²² ÁÖ¹®ÇÒ °æ¿ì Ãâ°í°¡´É ½Ã°£ÀÌ °¡Àå ±ä ±âÁØÀ¸·Î ¹è¼ÛµË´Ï´Ù.
À¯ÅëÀÇ Æ¯¼º»ó Ãâ°í±â°£Àº ¿¹Á¤º¸´Ù ¾Õ´ç°ÜÁö°Å³ª ´ÊÃçÁú ¼ö ÀÖ½À´Ï´Ù.
Åùè»ç ¹è¼ÛÀÏÀÎ ¼¿ï ¹× ¼öµµ±ÇÀº 1~2ÀÏ, Áö¹æÀº 2~3ÀÏ, µµ¼, »ê°£, ±ººÎ´ë´Â 3ÀÏ ÀÌ»óÀÇ ½Ã°£ÀÌ ¼Ò¿äµË´Ï´Ù. |
|
|
|
|