์๋์ ๊ฐ์ 2๋จ๊ณ ํด๋ํฐ ์ธ์ฆ ํ๋ฉด์ ๊ตฌํํด์ฃผ์ธ์.
- ์ฌ์ฉ์์๊ฒ ํด๋ํฐ ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ์ต๋๋ค.
- ์ ๋ ฅ ํ์์ 010-XXXX-XXXX ํ์์ผ๋ก ์ ํํฉ๋๋ค.
- ํ์์ด ๋ง์ง ์์ผ๋ฉด โ์ฌ๋ฐ๋ฅธ ๋ฒํธ๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์โ ๊ฒฝ๊ณ ๋ฌธ๊ตฌ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
- ์ ํจํ ๋ฒํธ๊ฐ ์ ๋ ฅ๋๋ฉด "์ธ์ฆ๋ฒํธ ์์ฒญ" ๋ฒํผ์ ํ์ฑํํ๊ณ , ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ค์ ๋จ๊ณ๋ก ์ด๋ํฉ๋๋ค.
- ์ธ์ฆ๋ฒํธ ์ ๋ ฅ ํ๋๋ฅผ ๋ณด์ฌ์ค๋๋ค.
- ์ธ์ฆ๋ฒํธ๋ฅผ ์ ๋ ฅํ๊ณ "ํ์ธ" ๋ฒํผ์ ๋๋ฅด๋ฉด:
- ์ธ์ฆ๋ฒํธ๊ฐ ๋ง์ผ๋ฉด "์ธ์ฆ๋์์ต๋๋ค!" ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.
- ํ๋ฆฌ๋ฉด "์ธ์ฆ๋ฒํธ๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค"๋ผ๋ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.
- ์ธ์ฆ๋ฒํธ๊ฐ ๋ง์ ์ํ์์๋ ๋ฒํผ์ ๋นํ์ฑํํ๊ณ ์๋ฃ ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
API๋ MSW(Mock Service Worker)๋ฅผ ์ด์ฉํ์ฌ ๋ชจํน๋์ด ์์ต๋๋ค.
์๋์ ์ ๋ฆฌ๋ API ๋ช ์ธ๋ฅผ ์ฐธ๊ณ ํด ๊ธฐ๋ฅ์ ๊ตฌํํด์ฃผ์ธ์.
์ ํํ MSW ๋ชจํน ๋์์ ํ์ธํ ํ์๊ฐ ์๋ค๋ฉด, src/mocks/handlers.ts๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
POST /api/auth/send-verification
Request ์์
{ "phoneNumber": "010-9999-8888" }Response ์์
// ์ฑ๊ณต ์
{
"success": true,
"message": "์ธ์ฆ๋ฒํธ๊ฐ ๋ฐ์ก๋์์ต๋๋ค.",
"data": {
"phoneNumber": "010-9999-8888",
"expiresAt": 12391293,
},
}// ์คํจ ์
{
"success": false,
"message": "์ฌ๋ฐ๋ฅธ ํด๋ํฐ ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์.",
}ํ ์คํธ ์ ์ฐธ๊ณ ์ฌํญ
๋ฐ๊ธ๋ ์ธ์ฆ๋ฒํธ๋ ๋ธ๋ผ์ฐ์ ์ฝ์ ์ฐฝ์ ์๋์ ๊ฐ์ ํ์์ผ๋ก ๋ณด์ฌ์ง๋๋ค. ํ ์คํธ ์ ์ฌ์ฉํด์ฃผ์ธ์.
[MSW] ${phoneNumber}๋ก ์ธ์ฆ๋ฒํธ ${verificationCode} ๋ฐ์ก
POST /api/auth/verify-code
Request ์์
{
"phoneNumber": "010-9999-8888",
"code": "000999"
}Response ์์
// ์ฑ๊ณต ์
{
"success": true,
"message": "์ธ์ฆ์ด ์๋ฃ๋์์ต๋๋ค.",
"data": {
"verified": true,
}
}// ์คํจ ์
{
"success": false,
"message": "์ธ์ฆ๋ฒํธ๊ฐ ์ฌ๋ฐ๋ฅด์ง ์๊ฑฐ๋ ๋ง๋ฃ๋์์ต๋๋ค.",
"data": {
"verified": false,
}
}๊ตฌํ ์ ์ ์์ฌํญ
shadcn๊ณผ ๊ฐ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๊ธฐ๋ณธ HTML ํ๊ทธ๋ง์ ์ด์ฉํด ๊ฐ๋ฐํด์ฃผ์ธ์.
์๋ฌ ๋ฉ์์ง, ๋ฒํผ ํ์ฑํ ์ฌ๋ถ ๋ฑ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ๋๋ก ํด์ฃผ์ธ์.
์๊ฐ ์ ์ฝ์ ์ํด ํ์์ ๋ฐ๋ผ ์์ฃผ ์ฌ์ฉํ๋ ์จ๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
TypeScript ๊ธฐ๋ฐ์ ํ๋ก์ ํธ๋ก, ํ์ ๊ฑด์ ์ฑ์ ์งํค๋ ๋ฐฉํฅ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ธ์.