½ºÇÁ¸µ ºÎÆ®·Î °·ÂÇÏ°í È®Àå °¡´ÉÇÏ¸ç ¾ÈÀüÇÑ REST API¸¦ ±¸ÃàÇϱâ À§ÇÑ Æ÷°ýÀûÀÎ °¡À̵åÀÎ '½ÇÀü ½ºÇÁ¸µ ºÎÆ® REST API °³¹ß (feat. Java, MyBatis, MySQL, Maven)'¿¡ ¿À½Å °ÍÀ» ȯ¿µÇÕ´Ï´Ù. ÀÌ Ã¥Àº ½ºÇÁ¸µ ºÎÆ®¸¦ óÀ½ »ç¿ëÇϵç, Áö½ÄÀ» ½ÉÈÇÏ°íÀÚ ÇÏµç »ó°ü¾øÀÌ È¿À²ÀûÀÎ RESTful À¥ ¼ºñ½º¸¦ ¸¸µé°í, µ¥ÀÌÅͺ£À̽º¿Í ÅëÇÕÇÏ°í, º¸¾ÈÀ» ó¸®ÇÏ°í, ÇÁ·Î´ö¼Ç¿ëÀ¸·Î ¹èÆ÷ÇÏ´Â µ¥ ÇÊ¿äÇÑ ±â¼úÀ» °®Ãß°Ô ÇØÁÝ´Ï´Ù.
1Àå, '½ºÇÁ¸µ ºÎÆ® °³¹ß ȯ°æ'¿¡¼´Â ½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ®¸¦ ¸¸µå´Â µ¥ ÇÊ¿äÇÑ Çʼö µµ±¸ÀÎ ÀÚ¹Ù¿Í ½ºÇÁ¸µ µµ±¸ 4ÀÇ ¼³Ä¡ °úÁ¤À» ¾È³»ÇÏ¿© ±âÃʸ¦ ´ÙÁý´Ï´Ù.
2Àå, '½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ® ¸¸µé±â'¿¡¼´Â ù ¹ø° ½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í, ÇÁ·ÎÁ§Æ® ÆÄÀÏÀ» ±¸¼ºÇÏ°í, ¼º°øÀûÀ¸·Î ½ÇÇàÇÏ´Â ´Ü°è¸¦ ´Ù·ì´Ï´Ù. ¶ÇÇÑ ÀÌ Àå¿¡¼´Â ½ºÇÁ¸µ MVC¿Í ÀϹÝÀûÀÎ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀÇ ±¸Á¶¸¦ ¼Ò°³ÇÕ´Ï´Ù.
3Àå, '·Òº¹'¿¡¼´Â @Getter, @Setter, @Data, @Slf4j¿Í °°Àº ·Òº¹ ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÏ¿© Äڵ带 °£¼ÒÈÇÏ¿© Àڹ٠Ŭ·¡½º¿¡¼ »ó¿ë±¸ Äڵ带 ÁÙÀÌ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù. ·Òº¹ÀÌ ¾î¶»°Ô ´õ ±ò²ûÇÏ°í °¡µ¶¼º ³ôÀº Ŭ·¡½º¸¦ ¸¸µå´Â µ¥ µµ¿òÀÌ µÇ´ÂÁö ¹è¿ì°Ô µË´Ï´Ù.
4Àå, 'REST'¿¡¼´Â REST API ¼³°è ¿øÄ¢À» ¼Ò°³ÇÏ°í @RestController ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÏ¿© REST ¿£µåÆ÷ÀÎÆ®¸¦ Á¤ÀÇÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù. ¶ÇÇÑ API ¹®¼È¸¦ À§ÇØ Swagger¿Í °°Àº µµ±¸¸¦ »ç¿ëÇÏ´Â ¹æ¹ýµµ ¹è¿ó´Ï´Ù.
5Àå, 'JSON'¿¡¼´Â JSON µ¥ÀÌÅÍ À¯Çü°ú @JsonProperty¿Í °°Àº ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÏ¿© JSON µ¥ÀÌÅ͸¦ ÀÚ¹Ù °´Ã¼¿¡ ¸ÅÇÎÇÏ´Â ¹æ¹ýÀ» ´Ù·ç¸é¼ ÀÚ¹Ù°¡ JSON°ú ÇÔ²² ÀÛµ¿ÇÏ´Â ¹æ½ÄÀ» ¼³¸íÇÕ´Ï´Ù.
6Àå, 'jQuery Ajax Åë½Å'¿¡¼´Â $.get(), $.post(), $.ajax()¿Í °°Àº jQueryÀÇ AJAX ¸Þ¼µå¸¦ »ç¿ëÇÏ¿© REST API¿Í »óÈ£ ÀÛ¿ëÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. ÀÌ Àå¿¡¼´Â ¿øÈ°ÇÑ Å¬¶óÀ̾ðÆ® Ãø °æÇèÀ» ±¸ÃàÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.
7Àå, 'ÄÁÆ®·Ñ·¯ ¿äû ¸ÅÇÎ'¿¡¼´Â @RequestMapping, @GetMapping, @PostMapping°ú °°Àº ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÏ¿© µé¾î¿À´Â HTTP ¿äûÀ» ÄÁÆ®·Ñ·¯ÀÇ ¸Þ¼µå¿¡ ¸ÅÇÎÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù. ¿äû °æ·Î¿Í ÆÐÅÏ ¸ÅÇεµ »ìÆ캾´Ï´Ù.
8Àå, 'ÄÁÆ®·Ñ·¯ ÀÀ´ä'¿¡¼´Â ÀÀ´ä ¿£Æ¼Æ¼¸¦ »ç¿ëÇØ ÀÚ¹ÙBean °´Ã¼, ¸ñ·Ï, ¸Ê, ½ÉÁö¾î ¿ø½Ã ¹ÙÀÌÆ® µ¥ÀÌÅÍ¿Í °°Àº ´Ù¾çÇÑ ÀÀ´ä À¯ÇüÀ» ·¡ÇÎÇÏ´Â ¹æ¹ýÀ» Æ÷ÇÔÇØ ÄÁÆ®·Ñ·¯¿¡¼ µ¥ÀÌÅ͸¦ ¹ÝȯÇÏ´Â ´Ù¾çÇÑ ¹æ¹ýÀ» ´Ù·ì´Ï´Ù.
9Àå, 'ÄÁÆ®·Ñ·¯ ¿äû ó¸®'¿¡¼´Â ´Ù¾çÇÑ À¯ÇüÀÇ ÄÁÆ®·Ñ·¯ ¸Þ¼µå ¸Å°³º¯¼ö, ÀÚ¹ÙºóÁ »ç¿ëÇÑ ¿äû ó¸®, @JsonFormat°ú °°Àº ¾î³ëÅ×À̼ÇÀ¸·Î ÆÄÀÏ ¾÷·Îµå ¹× ³¯Â¥/½Ã°£ ¼½ÄÀ» ó¸®ÇÏ´Â ¹æ¹ýÀ» ¾È³»ÇÕ´Ï´Ù.
10Àå, 'ÀÔ·Â À¯È¿¼º °Ë»ç'¿¡¼´Â °£´ÜÇÑ °Ë»çºÎÅÍ º¹ÀâÇÑ ÁßøµÈ ÀÚ¹Ùºó À¯È¿¼º °Ë»ç±îÁö ÀÔ·Â À¯È¿¼º °Ë»ç ¸ÞÄ¿´ÏÁòÀ» ¼Ò°³ÇÕ´Ï´Ù. @NotNull ¹× @Size¿Í °°Àº ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÏ¿© ±ÔÄ¢À» Àû¿ëÇÏ°í À¯È¿¼º °Ë»ç °á°ú¸¦ °ü¸®ÇÏ´Â ¹æ¹ýÀ» ¹è¿ó´Ï´Ù.
11Àå, '¸Þ½ÃÁö ó¸®'¿¡¼´Â API°¡ ¿©·¯ ¾ð¾î¿Í Áö¿ª ¼³Á¤À» Áö¿øÇÏ¿© ¾ÖÇø®ÄÉÀ̼ÇÀ» ´õ¿í »ç¿ëÀÚ Ä£ÈÀûÀ¸·Î ¸¸µé ¼ö ÀÖ´Â ±¹Á¦È ¹× ¸Þ½ÃÁö ¼Ò½º Á¤ÀǸ¦ ´Ù·ì´Ï´Ù.
12Àå, 'ÀÇÁ¸¼º ÁÖÀÔ'¿¡¼´Â ½ºÇÁ¸µÀÇ ÀÇÁ¸¼º ÁÖÀÔ ¸ÞÄ¿´ÏÁòÀ» ½ÉÃþÀûÀ¸·Î »ìÆ캸°í ÇÊµå ±â¹Ý, »ý¼ºÀÚ ±â¹Ý, ¼³Á¤ÀÚ ±â¹Ý ÁÖÀÔ¿¡ ´ëÇØ ¼³¸íÇÏ¸ç ¾ÖÇø®ÄÉÀÌ¼Ç ±¸¼ºÀ» °£¼ÒÈÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇÕ´Ï´Ù.
13Àå, '¿¹¿Ü ó¸®'¿¡¼´Â ±âº» try-catch ºí·ÏºÎÅÍ @ExceptionHandler¿Í °°Àº ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÑ »ç¿ëÀÚ Á¤ÀÇ ¿¹¿Ü 󸮱îÁö ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ¿¹¿Ü¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.
14Àå, 'ÀÎÅͼÁÅÍ'¿¡¼´Â ¿äûÀÌ ÄÁÆ®·Ñ·¯¿¡ µµ´ÞÇϱâ Àü¿¡ HTTP Çì´õ¸¦ ·Î±ëÇϰųª ¼öÁ¤ÇÏ´Â µî ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ¿äûÀ» Àüó¸®Çϰųª ÈÄó¸®Çϱâ À§ÇØ ÀÎÅͼÁÅ͸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» »ìÆ캾´Ï´Ù.
15Àå, 'µ¥ÀÌÅͺ£À̽º ¿¬°á'¿¡¼´Â µ¥ÀÌÅͺ£À̽º ¾×¼¼½º¸¦ À§ÇÑ ¼³Ä¡, ±¸¼º ¹× ½ºÇÁ¸µ JDBC, JPA, MyBatisÀÇ »ç¿ëÀ» ´Ù·ç´Â MySQL°úÀÇ µ¥ÀÌÅͺ£À̽º ÅëÇÕ¿¡ ´ëÇØ ¼Ò°³ÇÕ´Ï´Ù.
16Àå, '¸¶À̹ÙƼ½º'¿¡¼´Â ¸ÅÆÛ ±¸¼º, µ¿Àû SQL »ç¿ë, ¿£Æ¼Æ¼ °£ÀÇ °ü°è °ü¸® ¹æ¹ýÀ» ¼³¸íÇÏ¿© ±âÁ¸ JPA¿¡ ºñÇØ ´õ ¸¹Àº À¯¿¬¼ºÀ» Á¦°øÇÏ´Â ¸¶À̹ÙƼ½º¸¦ ½ÉÃþÀûÀ¸·Î »ìÆ캾´Ï´Ù.
17Àå, 'REST API ¼¹ö ±¸ÇöÇϱâ'¿¡¼´Â @RepositoryRestController¸¦ »ç¿ëÇÏ¿© RESTful ¼ºñ½º¸¦ ±¸ÇöÇÏ°í, ¿£µåÆ÷ÀÎÆ®¸¦ »ç¿ëÀÚ Á¤ÀÇÇÏ°í, HATEOAS(¾ÖÇø®ÄÉÀÌ¼Ç »óÅ ¿£ÁøÀ¸·Î¼ÀÇ ÇÏÀÌÆ۹̵ð¾î)¸¦ Àû¿ëÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.
18Àå, 'SPA Ŭ¶óÀ̾ðÆ®'¿¡¼´Â Vue.js·Î SPA(´ÜÀÏ ÆäÀÌÁö ¾ÖÇø®ÄÉÀ̼Ç)¸¦ ºôµåÇÏ°í, ½ºÇÁ¸µ ºÎÆ® REST API¿Í »óÈ£ ÀÛ¿ëÇϵµ·Ï ±¸¼ºÇÏ°í, Vuex¸¦ »ç¿ëÇÏ¿© »çÈÄ °ü¸® ¹× »óÅ ó¸®¿Í °°Àº ±â´ÉÀ» ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇÕ´Ï´Ù.
19Àå, 'ÆÄÀÏ ¾÷·Îµå'¿¡¼´Â ´õ ³ªÀº »ç¿ëÀÚ °æÇèÀ» À§ÇÑ À̹ÌÁö ¾÷·Îµå, ´ÙÁß ÆÄÀÏ ¾÷·Îµå, ºñµ¿±â ÆÄÀÏ ¾÷·Îµå ó¸® µî ÆÄÀÏ ¾÷·Îµå ±â´ÉÀ» ±¸ÇöÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.
20Àå, 'AOP'¿¡¼´Â ·Î±ë, Æ®·£Àè¼Ç °ü¸® ¹× º¸¾È°ú °°Àº ±³Â÷ÀûÀÎ ¹®Á¦¸¦ @Before ¹× @Around¿Í °°Àº ¾î³ëÅ×À̼ÇÀ» ÅëÇØ Àû¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÏ´Â °üÁ¡ ÁöÇâ ÇÁ·Î±×·¡¹Ö(AOP)À» ¼Ò°³ÇÕ´Ï´Ù.
21Àå, 'Æ®·£Àè¼Ç'¿¡¼´Â ¾ÖÇø®ÄÉÀ̼ǿ¡¼ Æ®·£Àè¼ÇÀ» °ü¸®ÇÏ¿© µ¥ÀÌÅͺ£À̽º ÀÛ¾÷¿¡¼ µ¥ÀÌÅÍ ¹«°á¼º°ú ÀÏ°ü¼ºÀ» º¸ÀåÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.
22Àå, '½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼'¿¡¼´Â ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼·Î REST API¸¦ º¸È£ÇÏ´Â ¹æ¹ýÀ» ½ÉÃþÀûÀ¸·Î ¼Ò°³ÇÕ´Ï´Ù. »ç¿ëÀÚ ÁöÁ¤ ·Î±×ÀÎ ÆäÀÌÁö ¹× JDBC ±â¹Ý ÀÎÁõ°ú °°Àº °í±Þ ÁÖÁ¦¿Í ÇÔ²² ÀÎÁõ, ±ÇÇÑ ºÎ¿© ¹× »ç¿ëÀÚ ¼¼¼ÇÀ» ±¸¼ºÇÏ´Â ¹æ¹ýÀ» ¹è¿ì°Ô µË´Ï´Ù.
23Àå, 'JWT'¿¡¼´Â ÅäÅ« »ý¼º, À¯È¿¼º °Ë»ç ¹× API ¿£µåÆ÷ÀÎÆ®¸¦ º¸È£Çϱâ À§ÇÑ º¸¾È ÇÊÅÍ »ý¼ºÀ» ´Ù·ç¸é¼ JSON À¥ ÅäÅ«(JWT)À¸·Î REST API¸¦ º¸È£ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
24Àå, '½ÇÀü REST API ÇÁ·ÎÁ§Æ®'¿¡¼´Â Àüü ÇÁ·ÎÁ§Æ® ¿¹Á¦¿Í ÇÔ²² ¸ðµç ³»¿ëÀ» Á¤¸®ÇÕ´Ï´Ù. CRUD ÀÛ¾÷, ¿¹¿Ü ó¸®, ÀÎÁõÀ» Æ÷ÇÔÇÏ¿© ¿ÏÀüÇÑ REST API¸¦ ¸¸µå´Â ¹æ¹ýÀ» ¹è¿ì°Ô µË´Ï´Ù.
ÀÌ Ã¥À» ¸¶Ä¡¸é °·ÂÇÑ RESTful ¼ºñ½º¸¦ ºôµå, º¸¾È ¹× ¹èÆ÷ÇÒ ¼ö ÀÖ´Â ½ºÇÁ¸µ ºÎÆ® REST API °³¹ß¿¡ ´ëÇÑ ±íÀº ÀÌÇظ¦ °®°Ô µÉ °ÍÀÔ´Ï´Ù. ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¸¦ ÇØ°áÇÏ°í ¾÷°è ¸ð¹ü »ç·Ê¸¦ ±¸ÇöÇϸç È®Àå °¡´ÉÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÒ ¼ö ÀÖ´Â Áö½ÄÀ» °®Ãß°Ô µÉ °ÍÀÔ´Ï´Ù.
ÀÌ Ã¥Àº Á¾ÀÌÃ¥ ÇüÅ°¡ ¾Æ´Ñ EPUB ÀüÀÚÃ¥À¸·Î Á¦À۵Ǿî, ÀüÅëÀûÀÎ ÆäÀÌÁö ·¹À̾ƿô°ú´Â ´Ù¸¥, À¥ ±â¹ÝÀÇ È帧À» ÃëÇÏ°í ÀÖ½À´Ï´Ù. µû¶ó¼ Á¾ÀÌÃ¥°ú °°Àº ±¸¼º¿¡ Àͼ÷ÇÑ µ¶ÀÚ¶ó¸é ´Ù¼Ò ÀÌÁú°¨À» ´À³¥ ¼ö ÀÖ½À´Ï´Ù.