Skip to content

๐Ÿฅ‡ ๋ฉ€ํ‹ฐ์บ ํผ์Šค ์ตœ์ข… ํŒ€ ํ”„๋กœ์ ํŠธ

Notifications You must be signed in to change notification settings

JayMon0327/MAT_ZIP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ํ”„๋กœ์ ํŠธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ง„ํ–‰์ค‘ โ™ป๏ธ

https://github.com/JayMon0327/MAT_ZIP_migration


[ํŒ€ํ”„๋กœ์ ํŠธ] ๋ง›.JAVA - ๋ง›.ZIP

๐Ÿ’ก ๋ง›.ZIP์€ โ€œ์ง„์งœ ๋ฏฟ๊ณ  ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋ง›์ง‘โ€ ์„ ๊ณต์œ ํ•˜๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

  • ๋ง›.JAVA ํŒ€์€ ๋ง›์ง‘ ํƒ๋ฐฉ์— ๋ˆ„๊ตฌ๋ณด๋‹ค ์ง„์‹ฌ์ธ ์‚ฌ๋žŒ๋“ค์ด ๋ญ‰์นœ ํŒ€์ž…๋‹ˆ๋‹ค. ๐Ÿ”
  • ํ‰์†Œ์— ๋ชจ๋‘๊ฐ€ ๊ฒช๊ณ  ์žˆ๋˜ ๋ถ€์ •ํ•œ ๊ด‘๊ณ , ๋ฏฟ์„ ์ˆ˜ ์—†๋Š” ํ›„๊ธฐ ์†์—์„œ ์†Œ๋น„์ž๋“ค์ด ๋ฏฟ๊ณ  ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ๋ง›์ง‘์„ ๋ชจ์•„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ์˜ ํ•„์š”์„ฑ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ, ์˜์ˆ˜์ฆ 2ํšŒ ์ด์ƒ ์ธ์ฆ๋œ ๋ง›์ง‘๋งŒ ๋“ฑ๋ก๋˜๋„๋ก ํ•ด์„œ ์‹ ๋ขฐ๋„ ๋ฐ ๋งŒ์กฑ๋„๊ฐ€ ๋†’์€ ๋ง›์ง‘๋งŒ ์„ ๋ณ„ํ•˜์—ฌ ์†Œ๋น„์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ตญ๋‚ด ์šด์˜ ์ค‘์ธ ๋ง›์ง‘ ์ถ”์ฒœ ์‚ฌ์ดํŠธ, ๋Œ€ํ˜• ํฌํ„ธ ์ง€๋„ ์‚ฌ์ดํŠธ์˜ ์‚ฌ๋ก€ ๋ถ„์„์„ ํ†ตํ•ด, ์›น์‚ฌ์ดํŠธ ๊ธฐ๋Šฅ์˜ ๋ฐฉํ–ฅ์„ฑ์„ "์ง„์ •์„ฑ ์žˆ๋Š” ๋ง›์ง‘ ๊ณต์œ "๋กœ ์ดˆ์ ์„ ๋งž์ท„์Šต๋‹ˆ๋‹ค.
  • ๋ง›์ง‘์„ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ง›์ง‘์„ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๋ฐฉ๋ฌธ์„ ์›ํ•˜๋Š” ์š”์‹์—…๊ณ„ ์‚ฌ์žฅ๋‹˜๋“ค๋„ ํƒ€์ผ“ํŒ…ํ•œ ์‚ฌ์žฅ๋‹˜ ์ „์šฉ ๊ตฌ๋… ์„œ๋น„์Šค ๋ฐ ๋…ธ์ถœ ๋ฐฐ๋„ˆ ๊ด‘๊ณ ๋ฅผ BM์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

1. ์ œ์ž‘ ๊ธฐ๊ฐ„

2023๋…„ 4์›” 28์ผ ~ 6์›” 9์ผ (1๊ฐœ์›”)


2. ์‚ฌ์šฉ ๊ธฐ์ˆ 

Back-end

  • Java 8
  • Spring Framework 5
  • Junit5
  • Maven
  • Mybatis

Front-end

  • JSP
  • JQuery 3.6.4
  • BootStrap 4

DevOps

  • AWS EC2, S3, RDS, CloudFront, Route 53, ALB
  • Tomcat 8.5
  • MySQL 8.0.32

Collaboration

  • Git, Sourcetree
  • Slack
  • Notion
  • Google Drive

External API

  • Toss Payments API
  • Google chart API
  • Naver AI Sentiment

3. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

๐Ÿ”ป๐Ÿ“main
    ๐Ÿ”ป๐Ÿ“java
        ๐Ÿ”ป๐Ÿ“boss
            ๐Ÿ”ป๐Ÿ“controller
                BoardController.java
                ReplyController.java
                ChartController.java
                PaymentController.java

            ๐Ÿ”ป๐Ÿ“dao
                BoardDAO.java
                ReplyDAO.java
                MemberDAO.java
                ChartDAO.java
                ReviewAnalysisDAO.java
                PaymentDAO.java

            ๐Ÿ”ป๐Ÿ“model
                BoardVO.java
                BoardLikesVO.java
                ReplyVO.java
                BossMemberVO.java
                MemberVO.java
                ChartVO.java
                ReturnCustomerCountVO.java
                ReturnOrderCountVO.java
                ReturnOrderTotalVO.java
                PaymentResponse.java
                PaymentVO.java

            ๐Ÿ”ป๐Ÿ“service
                ChartService.java
                ReviewTransferService.java
                ReviewAnalysisService.java
                PaymentService.java
                RegisterMemberAndPaymentService.java

    ๐Ÿ”ป๐Ÿ“resources
        ๐Ÿ”ป๐Ÿ“mapper
            BoardMapper.xml
            ReplyMapper.xml
            BossMapper.xml
            ChartMapper.xml
            ReviewAnalysisMapper.xml
            PaymentMapper.xml

    ๐Ÿ”ป๐Ÿ“webapp
        ๐Ÿ”ป๐Ÿ“boss
            index.jsp
            chart.jsp
            saveMember.jsp
            boardInsert.jsp
            boardUpdate.jsp
            boardDelete.jsp

        ๐Ÿ”ป๐Ÿ“layout
            foorter.jsp
            header.jsp

        ๐Ÿ”ป๐Ÿ“resources
            ๐Ÿ”ป๐Ÿ“js
                bossMenu.js
                bossReply.js
                bossScroll.js

        ๐Ÿ”ป๐Ÿ“WEB-INF
            ๐Ÿ”ป๐Ÿ“views
                ๐Ÿ”ป๐Ÿ“boss
                    boardDetail.jsp
                    boardIndex.jsp
                    boardInsert.jsp
                    boardSearch.jsp
                    boardUpdate.jsp
                    saveReply.jsp
                    tossFail.jsp
                    tossSuccess.jsp


4. ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • [์ดํ›„์„ฑ] ์‚ฌ์žฅ ์ปค๋ฎค๋‹ˆํ‹ฐ

    • ํ† ์Šค ํŽ˜์ด API๋ฅผ ์ด์šฉํ•œ ํŠธ๋žœ์žญ์…˜ ๊ตฌ๋…๊ฒฐ์ œ ์‹œ์Šคํ…œ๊ณผ ์˜ˆ์™ธ์ฒ˜๋ฆฌ
    • Ajax์™€ Restful ๋ฐฉ์‹์œผ๋กœ ๊ฒŒ์‹œํŒ ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ, ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ, '์ข‹์•„์š”' ๊ธฐ๋Šฅ๊ณผ ํŽ˜์ด์ง• ๊ธฐ๋Šฅ
    • DB์—์„œ ๋ฐ์ดํ„ฐ ์„ ๋ณ„, SQL๋ฌธ ๋กœ์ง์ž‘์„ฑ, ๊ตฌ๊ธ€ chart API๋กœ ๋งค์ถœ์ฐจํŠธ ๋ฐ ์žฌ๋ฐฉ๋ฌธ ์ฐจํŠธ ๊ตฌํ˜„
    • Clova API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†๋‹˜๋“ค์˜ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ์ •๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์ฐจํŠธํ™”

| |


5. ERD ์„ค๊ณ„


5. ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์„ค๋ช… & ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

[์ดํ›„์„ฑ] ์‚ฌ์žฅ ์ปค๋ฎค๋‹ˆํ‹ฐ

๐Ÿ“Œํ•ต์‹ฌ ๊ธฐ๋Šฅ ์„ค๋ช…
1. ํ† ์Šค API๋ฅผ ์ด์šฉํ•œ ๊ฒฐ์ œํ•˜๊ธฐ
  • ๋จผ์ €, JavaScript ์ฝ”๋“œ์—์„œ๋Š” 'https://js.tosspayments.com/v1/payment' JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TossPayments ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ์ฒด๋Š” ํ† ์Šค ๊ฒฐ์ œ ํด๋ผ์ด์–ธํŠธ ํ‚ค์ธ clientKey๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„, ๊ฒฐ์ œ ์‹œ์Šคํ…œ๊ณผ์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž๊ฐ€ '๊ฒฐ์ œํ•˜๊ธฐ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด, jQuery๋ฅผ ์ด์šฉํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด requestPayment ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค: ์ฒซ์งธ, jQuery์˜ $.ajax ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ƒ์  ID(storeId)์˜ ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ์„œ๋ฒ„์— ๋น„๋™๊ธฐ์ ์œผ๋กœ ์š”์ฒญํ•˜๊ณ  ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋‘˜์งธ, ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” storeId๋ฅผ ํ™•์ธํ•œ ํ›„, ๋žœ๋ค์œผ๋กœ orderID๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ orderID๋Š” ๊ฒฐ์ œ ์š”์ฒญ ์‹œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋‘ ์ž‘์—…์ด ๋ชจ๋‘ ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒฝ์šฐ์—๋งŒ ๊ฒฐ์ œ ์š”์ฒญ์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

  • ๊ฒฐ์ œ ์š”์ฒญ์€ TossPayments API๋กœ ์ „์†ก๋˜๋ฉฐ, ๊ฒฐ์ œ ์ •๋ณด๋ฅผ ๋‹ด์€ JavaScript ๊ฐ์ฒด๋ฅผ JSON.stringify ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JSON ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ, Apache์˜ CloseableHttpClient์™€ HttpPost๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉฐ, ์š”์ฒญ ํ—ค๋”๋ฅผ setHeader ๋ฉ”์„œ๋“œ๋กœ ์„ค์ •ํ•˜๊ณ , ์š”์ฒญ ์—”ํ‹ฐํ‹ฐ๋ฅผ StringEntity ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ์ œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉด, ๊ฒฐ์ œ ์„ฑ๊ณต URL๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • โ€ผ๊ฒฐ๊ณผโ€ผ ๊ฒฐ์ œํ•˜๊ธฐ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ํ† ์Šค ๊ฒฐ์ œ API์™€ ์—ฐ๊ฒฐ๋˜์–ด ์ƒ์  ID์˜ ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๊ณ  ๊ฒฐ์ œ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.


2. ์‚ฌ์žฅ ํšŒ์› ๋“ฑ๋ก
  • ๊ฒฐ์ œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€์„œ, ์ƒ์  ID(storeId)์™€ ์„ธ์…˜์˜ user_id๋ฅผ ์ด์šฉํ•ด ์‚ฌ์žฅ ๋ฉค๋ฒ„๋กœ์˜ ํšŒ์› ๋“ฑ๋ก์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ jQuery์™€ AJAX๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด AJAX ์š”์ฒญ์€ ํŠน์ • ์—”๋“œํฌ์ธํŠธ์ธ '/innerJoinAndInsert'๋กœ ์ „์†ก๋˜๋ฉฐ, ์„œ๋ฒ„์—์„œ๋Š” ์ด ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ๋Š” MemberAndPaymentService ํด๋ž˜์Šค๊ฐ€ ์ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. MemberAndPaymentService๋Š” ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด ํด๋ž˜์Šค๋Š” ํšŒ์› ๋“ฑ๋ก๊ณผ ๊ฒฐ์ œ๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” AJAX ์š”์ฒญ์˜ ์„ฑ๊ณต ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ฝ˜์†”์— ์„ฑ๊ณต ๋˜๋Š” ์‹คํŒจ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์„ฑ๊ณต ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์„œ๋ฒ„์—์„œ ํšŒ์› ๋“ฑ๋ก์ด ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ์ด๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‹คํŒจ ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ํšŒ์› ๋“ฑ๋ก ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉด, ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ์ด storeId๋ฅผ ์„ธ์…˜์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ์ƒ์  ID๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • โ€ผ๊ฒฐ๊ณผโ€ผ ์„œ๋ฒ„์—์„œ ํšŒ์› ๋“ฑ๋ก์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉด, ํด๋ผ์ด์–ธํŠธ ์ฝ˜์†”์— ์„ฑ๊ณต ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ , ์ƒ์  ID๋Š” ์„ธ์…˜์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.


3. ๊ฒฐ์ œ ๋‚ด์—ญ ์ €์žฅํ•˜๊ธฐ
  • ๊ฒฐ์ œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ ํ›„, ๊ฒฐ์ œ ๋‚ด์—ญ์€ ์„œ๋ฒ„๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋Š” /payment ์—”๋“œํฌ์ธํŠธ๋กœ ์ „์†ก๋˜๋ฉฐ, ์„œ๋ฒ„๋Š” ์ด ์ •๋ณด๋ฅผ ๋ฐ›์•„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ์˜ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์ฒ˜๋ฆฌ๋Š” PaymentService์™€ PaymentController ํด๋ž˜์Šค์—์„œ ์ˆ˜ํ–‰๋˜๋ฉฐ, ์ด๋“ค ํด๋ž˜์Šค ์—ญ์‹œ ์˜์กด์„ฑ ์ฃผ์ž…์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…๋ฐ›์Šต๋‹ˆ๋‹ค.

  • PaymentVO ๊ฐ์ฒด์—๋Š” ์ฃผ๋ฌธ ID, ๊ฒฐ์ œ ๊ธˆ์•ก, ์ฃผ๋ฌธ ์ด๋ฆ„ ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •๋ณด๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์‘๋‹ต์—์„œ ์ถ”์ถœํ•˜๋ฉฐ, ์ด ๊ณผ์ •์—์„œ Apache์˜ HttpComponents ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๋Š” CloseableHttpClient ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋กœ HTTP ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ HttpPost ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ ํ—ค๋”์™€ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ—ค๋”๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ์—”ํ‹ฐํ‹ฐ๋Š” POST ์š”์ฒญ์„ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ์ „์†ก๋  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์š”์ฒญ์ด ์„œ๋ฒ„๋กœ ์ „์†ก๋œ ํ›„, ํด๋ผ์ด์–ธํŠธ๋Š” CloseableHttpResponse ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ์˜ ์‘๋‹ต์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์‘๋‹ต์€ EntityUtils์˜ toString ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ž์—ด์€ JSON ํ˜•ํƒœ๋กœ ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, JsonParser.parseString ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JSON ๋ฌธ์ž์—ด์„ JsonObject๋กœ ํŒŒ์‹ฑํ•ฉ๋‹ˆ๋‹ค.

  • ์ด๋ ‡๊ฒŒ ํŒŒ์‹ฑ๋œ JsonObject์—์„œ, ์ฃผ๋ฌธ ID, ๊ฒฐ์ œ ๊ธˆ์•ก, ์ฃผ๋ฌธ ์ด๋ฆ„ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜์—ฌ PaymentVO ๊ฐ์ฒด์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ PaymentVO ๊ฐ์ฒด๋Š” ์„œ๋ฒ„์— ๋ณด๋‚ด์ง‘๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋Š” ๊ฒฐ์ œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ์Œ์„ ํ™•์ธํ•˜๊ณ , ํ•ด๋‹น ๊ฒฐ์ œ ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • โ€ผ๊ฒฐ๊ณผโ€ผ ๊ฒฐ์ œ ์ •๋ณด๊ฐ€ ์„œ๋ฒ„์— ์ „๋‹ฌ๋˜๊ณ , ํ•ด๋‹น ์ •๋ณด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์„ฑ๊ณต์ ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

โšฝํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…
1. ํ† ์Šค ๊ฒฐ์ œ API์—์„œ ๊ฒฐ์ œ ์‘๋‹ต๊ฐ’์ด null๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฌธ์ œ
  • ์ฒซ ๋ฒˆ์งธ ์‹œ๋„ : ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฒฐ์ œ ์š”์ฒญ ๊ฐ’ ์„ค์ • -> โŒ๋น„์ •์ƒ์ž‘๋™

    • 'PaymentKey, PaymentType, orderId, amount ๊ฐ’ ๋ชจ๋‘ ํ•„์š”ํ•˜๋‹ค'๊ณ  ์›น ์ฝ˜์†” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์™”๋Š”๋ฐ, ๊ฒฐ๊ตญ PaymentKey์™€ PaymentType ๊ฐ’์€ ์„œ๋ฒ„์—์„œ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋๋‹ค. ์ด๊ฒŒ ์›์ธ์ด์—ˆ๋‚˜๋ณด๋‹ค ์‹ถ์–ด์„œ orderId์™€ amount ๊ฐ’๋งŒ ์š”์ฒญ์— ๋„ฃ์—ˆ๋Š”๋ฐ, ๊ฒฐ์ œ๋Š” ๋˜๋Š”๋ฐ ๊ฒฐ์ œ ์„ฑ๊ณต ํŽ˜์ด์ง€์—์„œ ๊ฒฐ์ œ ์‘๋‹ต๊ฐ’์„ ์—ฌ์ „ํžˆ ๋ชป ๋ฐ›์•„์™”๋‹ค.
  • ๋‘ ๋ฒˆ์งธ ์‹œ๋„ : API ์š”์ฒญ์„ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌ -> โญ•์ •์ƒ์ž‘๋™!

    ํด๋ผ์ด์–ธํŠธ์—์„œ API ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋‹ˆ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฒฐ์ œ ์‘๋‹ต๊ฐ’์„ JSON ํ˜•ํƒœ๋กœ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ๋„ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ฐ”๊ฟจ๋‹ค. ์„œ๋น„์Šค ๋ ˆ์ด์–ด๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , Secret Key๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•ด์„œ ์š”์ฒญ์„ ๋ณด๋‚ด๋‹ˆ๊นŒ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ–ˆ๋‹ค. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋„ try-catch ๊ตฌ๋ฌธ์„ ์จ์„œ ํ•ด๊ฒฐํ–ˆ๊ณ , ์š”์ฒญ์ด ์„ฑ๊ณตํ•˜๋ฉด 200์ด๋ผ๋Š” HTTP OK ์‹ ํ˜ธ๊ฐ€ ์˜ค๋Š” ๊ฒƒ์„ ์ด์šฉํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‘๋‹ต ํ—ค๋”์— 'Content-Type: application/json'์„ ์จ์„œ JSON์œผ๋กœ ํŒŒ์‹ฑ๋œ ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๋‹ˆ๊นŒ ์‘๋‹ต์ •๋ณด๋„ ์ž˜ ํ‘œ์‹œ๋๋‹ค.

    ์ด๋ฒˆ ์˜ค๋ฅ˜๋ฅผ ํ†ตํ•ด์„œ ๋‹ค์–‘ํ•œ ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ API ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋‹ˆ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๋Š” ๊ฒƒ, ์„œ๋น„์Šค ๋ ˆ์ด์–ด๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•, ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•, Secret Key๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  'Content-Type: application/json' ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•ด์„œ JSON์œผ๋กœ ํŒŒ์‹ฑ๋œ ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

    String encodedSecretKey = Base64.getEncoder().encodeToString((secretKey + ":").getBytes()); Base64์ธ์ฝ”๋”ฉ ํ•˜๋Š” ์ฝ”๋“œ
    

2. SQL ์ฟผ๋ฆฌ๋ฌธ syntax ์—๋Ÿฌ
  • ์ฒซ ๋ฒˆ์งธ ๋ฐœ๊ฒฌ : mapper์—์„œ ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ ํ›„ ์‹คํ–‰ -> โŒsyntax ์—๋Ÿฌ ๋ฐœ์ƒ

    • Mysql ๋ฌธ๋ฒ•์— ๋งž์ง€ ์•Š์•„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋‹ค. ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ์—์„œ ์ž˜๋ชป๋๋‹ค๊ณ  ํŒ๋‹จํ•˜์˜€๊ณ , ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ ๋ถ€๋“ฑํ˜ธ์™€ ๊ฐ™์€ ํŠน์ˆ˜ ๋ฌธ์ž ๋•Œ๋ฌธ์— XML ํŒŒ์‹ฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด <![CDATA[]]>๋ฅผ ์ด์šฉํ•ด ํ•ด๋‹น ๋ถ€๋ถ„์„ ๊ฐ์‹ธ ์ฒ˜๋ฆฌํ•˜์˜€์œผ๋‚˜, ์ดํ›„ MySQL์—์„œ๋Š” ๋‹ค์‹œ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• : XML ์—”ํ‹ฐํ‹ฐ ์‚ฌ์šฉ -> โญ•์ •์ƒ์ž‘๋™!

    XML ๋ฌธ๋ฒ•์— ๋”ฐ๋ฅด๋ฉด, <, >์™€ ๊ฐ™์€ ํŠน์ˆ˜ ๋ฌธ์ž๋Š” ํƒœ๊ทธ๋ฅผ ์˜๋ฏธํ•˜๊ธฐ์— ์ด๋“ค์„ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฐ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” XML ์—”ํ‹ฐํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, <๋Š” &it;๋กœ, >๋Š” &gt;๋กœ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์˜€๋‹ค.

    ์ด๋ฒˆ ์˜ค๋ฅ˜๋ฅผ ํ†ตํ•ด SQL ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ XML ์˜ค๋ฅ˜๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ๋˜ XML์—์„œ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.


3. AI ๊ฐ์ •๋ถ„์„ API ์‚ฌ์šฉ์‹œ null ์—๋Ÿฌ

๊ฐ์ • ๋ถ„์„ API๋ฅผ ํ†ตํ•ด ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ์˜ ๋ถ„์„์„ ์š”์ฒญํ–ˆ์„ ๋•Œ, ์‘๋‹ต๊ฐ’ ์ค‘ '์ค‘๋ฆฝ'๋งŒ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๋ถ„์„ ๋Œ€์ƒ์ธ 'content'๊ฐ€ '???' ํ˜•ํƒœ ํ˜น์€ null๋กœ ์‘๋‹ต ๋ฐ›์•„์ง€๋Š” ๊ฒƒ์ด ์›์ธ์ด์—ˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ์‹œ๋„ : ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์—ฌ๋Ÿฌ ajax ์š”์ฒญ์„ ๋™์‹œ์— ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๋ฌธ์ œ๋ผ๊ณ  ํŒ๋‹จํ•ด์„œ promise ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด ์ˆœ์ฐจ์  ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ๋„ -> โŒ๋น„์ •์ƒ์ž‘๋™

  • ๋‘ ๋ฒˆ์งธ ์‹œ๋„ : JSON ํ˜•์‹์œผ๋กœ ์š”์ฒญ์ด ๋˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด JSON.stringify๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ƒ์ ์œผ๋กœ JSON ์š”์ฒญ์„ ๋ณด๋ƒ„ -> โŒ๋น„์ •์ƒ์ž‘๋™

  • ์„ธ ๋ฒˆ์งธ ์‹œ๋„ : ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ ์ž์ฒด๊ฐ€ DB์—์„œ UTF-8๋กœ ์ธ์ฝ”๋”ฉ๋˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ utf8mb4๋กœ ์ธ์ฝ”๋”ฉ -> โŒ๋น„์ •์ƒ์ž‘๋™

  • ๋„ค ๋ฒˆ์งธ ์‹œ๋„ : ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ DB์™€ ์—ฐ๊ฒฐ ์‹œ UTF-8 ์„ค์ •์ด ์•ˆ ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด spring์˜ root-context.xml ํŒŒ์ผ์„ ํ™•์ธ -> โŒ๋น„์ •์ƒ์ž‘๋™

  • ๋‹ค์„ฏ ๋ฒˆ์งธ ์‹œ๋„ : API ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ์„ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„์—์„œ ๋””์ฝ”๋”ฉํ•˜์—ฌ ๋ฐ›์€ ํ›„ ์„œ๋ฒ„์—์„œ API ์š”์ฒญ์„ ๋ณด๋ƒ„ -> โŒ๋น„์ •์ƒ์ž‘๋™

  • ์—ฌ์„ฏ ๋ฒˆ์งธ ์‹œ๋„ : ์„œ๋ฒ„์—์„œ API ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ base64๋กœ ์ธ์ฝ”๋”ฉํ•˜๊ณ  ์ฒ˜๋ฆฌ ํ›„ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „๋‹ฌํ•˜์˜€๊ณ , ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋””์ฝ”๋”ฉํ•˜์—ฌ ์ถœ๋ ฅ -> โŒ๋น„์ •์ƒ์ž‘๋™

  • ์ผ๊ณฑ ๋ฒˆ์งธ ์‹œ๋„ : HttpEntity ๊ฐ์ฒด ์‚ฌ์šฉ ๋ฐ ContentType์— UTF-8 ๋ช…์‹œ -> โญ•์ •์ƒ ์ž‘๋™!

    ๋„ค์ด๋ฒ„ ๊ฐ์ •๋ถ„์„ API ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ์š”์ฒญ ํ—ค๋”์— UTF-8์„ ๋ช…์‹œํ•˜๋ผ๊ณ  ๋˜์–ด์žˆ๋‹ค. ์ด๋ฅผ ์ ์šฉํ•ด ๋ณด๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ์š”์ฒญ์ด ์ด๋ฃจ์–ด์กŒ๋‹ค.

    headers.setContentType(new MediaType("application", "json", StandardCharsets.UTF_8));
    

    ์ด๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด API ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ธ์ฝ”๋”ฉ๊ณผ ํ—ค๋” ์„ค์ •์˜ ์ค‘์š”์„ฑ์„ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋˜ํ•œ, ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฃผ์˜ ๊นŠ๊ฒŒ ์ฝ๋Š” ๊ฒƒ์˜ ์ค‘์š”์„ฑ๋„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ธ์ง€ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

  • ์ถ”๊ฐ€ ์—๋Ÿฌ ๋ฐœ์ƒ

    • ๋‘ ๋ฒˆ์งธ ๋ฌธ์ œ์  : API ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๊ณ , ๊ธ์ •, ๋ถ€์ •, ์ค‘๋ฆฝ ์‘๋‹ต๋„ ์ •์ƒ์ ์œผ๋กœ ๋ฐ›์•„์˜ค๋Š” ์ƒํ™ฉ์—์„œ, ์‘๋‹ต๋ฐ›์€ ํŽ˜์ด์ง€์—์„œ 'content'๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•  ๋•Œ '???' ํ˜•ํƒœ๋กœ ํ‘œ์‹œ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ ์›์ธ ๋ถ„์„ ๊ฒฐ๊ณผ, ์„œ๋น„์Šค ํŒŒ์ผ๊ณผ ์‘๋‹ต ํƒ€์ž… ๋ฐ ์ธ์ฝ”๋”ฉ ํ˜•์‹์„ ๋งž์ถ”๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํด๋ผ์ด์–ธํŠธ ์ธก๊ณผ ๋งž์ถ”์–ด์•ผ ํ–ˆ๋‹ค. ๊ฐ์ • ๋ถ„์„ API์˜ ๋‹ค๋ฅธ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ด ๋ถ€๋ถ„์„ ๋†“์น˜๊ฒŒ ๋œ ๊ฒƒ์œผ๋กœ ํŒŒ์•…๋˜์—ˆ๋‹ค.

    • ํ•ด๊ฒฐ๋ฐฉ๋ฒ• : ์ปจํŠธ๋กค๋Ÿฌ ๋งคํ•‘์—์„œ ๋ฐ›์•„์˜ค๋Š” ํƒ€์ž…์„ ํด๋ผ์ด์–ธํŠธ ์ธก๊ณผ ๋งž์ถ”์–ด์ฃผ๋‹ˆ, 'content'๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

     @GetMapping(value = "/analyze/{storeId}", produces = "application/json; charset=UTF-8")
    

    ์ด๋ฅผ ํ†ตํ•ด, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ์‹œ ๋ฐ์ดํ„ฐ ํ˜•์‹๊ณผ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์˜ ์ค‘์š”์„ฑ์„ ์žฌ์ธ์‹ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋˜ํ•œ, API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ƒ๊ธฐ๋Š” ๋‹ค์–‘ํ•œ ๋ฌธ์ œ์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊นŠ์€ ์ดํ•ด์™€ ์ •ํ™•ํ•œ ๋ฌธ์ œ ํŒŒ์•… ๋Šฅ๋ ฅ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

About

๐Ÿฅ‡ ๋ฉ€ํ‹ฐ์บ ํผ์Šค ์ตœ์ข… ํŒ€ ํ”„๋กœ์ ํŠธ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published