๐Ÿ“‹ ๊ฐœ์š”

Next.js์—์„œ MSW(Mock Service Worker)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ SSR์€ ์ •์ƒ ๋™์ž‘ํ•˜์ง€๋งŒ CSR์—์„œ API ํ˜ธ์ถœ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์›๋ณธ ์ฝ”๋“œ: GitHub - MSWProvider.tsx

๐Ÿ”ด ๋ฌธ์ œ ์ƒํ™ฉ

API ๋ชจํ‚น ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์‹œ SSR์€ ์ •์ƒ ๋™์ž‘ํ•˜์ง€๋งŒ, CSR์€ API ํ˜ธ์ถœ ์—๋Ÿฌ ๋ฐœ์ƒ

๋ฌธ์ œ ์›์ธ

ํƒ€์ด๋ฐ ์ด์Šˆ

  1. ์„œ๋ฒ„ MSW: MSWProvider ๋ชจ๋“ˆ์ด ๋กœ๋“œ๋˜์ž๋งˆ์ž ์ฆ‰์‹œ ์ดˆ๊ธฐํ™” (์ •์ƒ ๋™์ž‘)
  2. ํด๋ผ์ด์–ธํŠธ MSW: MSWProvider์˜ useEffect์—์„œ ์ดˆ๊ธฐํ™”
  3. ๋ฌธ์ œ: Page ์ปดํฌ๋„ŒํŠธ์˜ useEffect๊ฐ€ MSWProvider์˜ useEffect๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋˜์–ด MSW ์ค€๋น„ ์ „์— API ์š”์ฒญ ๋ฐœ์ƒ

์ž ์žฌ์  ์œ„ํ—˜

์„œ๋ฒ„ MSW๋„ ๋น„๋™๊ธฐ๋กœ ์ดˆ๊ธฐํ™”๋˜๋ฏ€๋กœ, ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ ๋กœ๋”ฉ ์ „์— MSW ์ดˆ๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (์ด ๋‚ด์šฉ์€ ํ•˜๊ธฐ ๊ฐœ์„  ์‚ฌํ•ญ์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.)

๊ฒ€ํ†  ๋‚ด์šฉ

1. MSWProvider์˜ isReady๋ฅผ context๋กœ ๊ด€๋ฆฌ (๋น„ํšจ์œจ)

MSWProvider์—์„œ๋Š” ํ•ญ์ƒ children์„ ๋ฐ˜ํ™˜ํ•˜๋˜, isReady state๋ฅผ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜์—ฌ page.tsx์—์„œ isReady๊ฐ€ true๊ฐ€ ๋˜๊ธฐ ์ „์—๋Š” api ์š”์ฒญ์„ ํ•˜์ง€ ์•Š๋„๋ก ๋ง‰๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.