โœ๏ธ DevLog/Devcourse

[DevCourse] ์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 14์ผ์ฐจ

hyebin (Helia) 2025. 4. 22. 18:45
๋ฐ˜์‘ํ˜•

์˜ค๋Š˜์€ ๋“œ๋””์–ด React๋กœ ์™ธ๋ถ€ API๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•ด ๋ณด๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ–ˆ๋‹ค.

๋‰ด์Šค API๋ฅผ ์—ฐ๋™ํ•ด์„œ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋‰ด์Šค๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋‰ด์Šค ๋ทฐ์–ด ํŽ˜์ด์ง€๋ฅผ ์ง์ ‘ ๋งŒ๋“ค๋ฉด์„œ,

๊ทธ๋™์•ˆ ๋ฐฐ์›Œ์™”๋˜ ๊ฐœ๋…๋“ค์ด ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ๋˜๋Š”์ง€๋ฅผ ์‹ค๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


๐Ÿ“Œ ์˜ค๋Š˜ ๋ฐฐ์šด ์ฃผ์š” ๋‚ด์šฉ ์ •๋ฆฌ

1. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ๊ฐœ๋…๊ณผ ํ๋ฆ„

  • setTimeout์œผ๋กœ ๊ตฌํ˜„๋œ ์ฝœ๋ฐฑ ํŒจํ„ด → Promiseasync/await ์ˆœ์œผ๋กœ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์˜ ํ๋ฆ„์„ ์ •๋ฆฌํ–ˆ๋‹ค.
  • async/await๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ๋น„๋™๊ธฐ ๋กœ์ง๋„ ๋™๊ธฐ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ฝํžˆ๊ธฐ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด, ์‹ค์ œ๋กœ ์จ๋ณด๋‹ˆ ์ •๋ง ๊น”๋”ํ•˜๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›์•˜๋‹ค.

2. ๋‰ด์Šค API ์—ฐ๋™ ์‹ค์Šต

  • axios๋ฅผ ์ด์šฉํ•ด ๋‰ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ณ ,
  • ์นดํ…Œ๊ณ ๋ฆฌ ์„ ํƒ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฑด๋ถ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋‰ด์Šค ๋ทฐ์–ด ์•ฑ์„ ๋งŒ๋“ค์—ˆ๋‹ค.
  • useEffect ํ›…์œผ๋กœ API ํ˜ธ์ถœ ํƒ€์ด๋ฐ์„ ์ œ์–ดํ•˜๊ณ ,
  • ์ปค์Šคํ…€ ํ›…(usePromise)์œผ๋กœ ๋น„๋™๊ธฐ ํ˜ธ์ถœ ๋กœ์ง์„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ํ•จ๊ป˜ ๋ฐฐ์› ๋‹ค.

๐Ÿงช ์‹ค์Šต ์†Œ๊ฐ

์ฒ˜์Œ์œผ๋กœ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์‹ค์ œ๋กœ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๋Š” ์ž‘์—…์„ ํ•ด๋ดค๋‹ค๋Š” ์ ์—์„œ

์˜ค๋Š˜์€ ๊ต‰์žฅํžˆ ์ธ์ƒ ๊นŠ์€ ํ•˜๋ฃจ์˜€๋‹ค.

 

์ฒ˜์Œ์—” useEffect, axios, async/await ํ๋ฆ„์ด ๋จธ๋ฆฟ์†์—์„œ ์—ฐ๊ฒฐ์ด ์ž˜ ์•ˆ ๋์ง€๋งŒ,

์‹ค์ œ๋กœ ๋‰ด์Šค๋ฅผ ๋ฐ›์•„์™€ ํ™”๋ฉด์— ๋ Œ๋”๋ง ๋˜๋Š” ๊ฑธ ํ™•์ธํ•˜๋ฉด์„œ

๋‚ด๊ฐ€ ์–ด๋–ค ํ๋ฆ„์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๊ณ  ์žˆ๋Š”์ง€๋ฅผ ์ ์  ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

ํŠนํžˆ usePromise ์ปค์Šคํ…€ ํ›…์„ ์ž‘์„ฑํ•˜๋ฉด์„œ

React์—์„œ ๋กœ์ง์„ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ๋„ ์‹ค๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ ,

๊ทธ๋™์•ˆ ๋‹จ์ˆœํ•˜๊ฒŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๊ณผ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ฐœ๋…์˜ ํ™•์žฅ์„ ๊ฒฝํ—˜ํ•œ ๋А๋‚Œ์ด์—ˆ๋‹ค.

 

์•„์ง ๋ฌธ๋ฒ•์ด ์ต์ˆ™ํ•˜์ง€ ์•Š์•„ ์กฐ๊ธˆ ํ—ค๋งค๊ธฐ๋„ ํ–ˆ์ง€๋งŒ ์žฌ๋ฏธ์žˆ์—ˆ๋‹ค.


๐Ÿงก ๋А๋‚€ ์ 

์˜ค๋Š˜์€ ๋‹จ์ˆœํ•œ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋„˜์–ด์„œ,

React๋กœ ์‹ค์ œ ์„œ๋น„์Šค์— ๊ฐ€๊นŒ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด ๋ณธ ์ฒซ๋‚ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

API๋ฅผ ์ง์ ‘ ์—ฐ๋™ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์กฐ๊ฑด์— ๋งž๋Š” ๋‰ด์Šค๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ณผ์ •์„ ๋ณด๋ฉด์„œ

“์•„, ์ง„์งœ ์›น์•ฑ์„ ๋งŒ๋“ค๊ณ  ์žˆ๊ตฌ๋‚˜” ํ•˜๋Š” ์‹ค๊ฐ์ด ๋“ค์—ˆ๋‹ค.

 

์˜ค๋Š˜์ฒ˜๋Ÿผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๋ฉฐ ์ตํžˆ๋Š” ํ๋ฆ„์ด ๋‚˜๋ž‘ ์ž˜ ๋งž๋Š” ๊ฒƒ ๊ฐ™๋‹ค :)

 

๋ฐ˜์‘ํ˜•