๋ง์ง๋งํ๊ธฐ์ ๊ธฐ๋ง๊ณ ์ฌ๊ฐ ์์๋์๋ค. ์ํ์ ์ด 3๊ฐ + ๊ธฐ๋ง ํ๋ก์ ํธ 1๊ฐ. ์ฌ์ค ๋ฏธ๋ฆฌ ํด๋๋ค๋ฉด ์ถฉ๋ถํ ๊ฐ๋ฅํ๊ฒ ์ง๋ง ์ด๋ฏธ ํ๋ก์ ํธ ๋ชฐ์
200% ํด๋ ์ํ๋ผ ๋ถ๋ด๋ถ๋ด ๊ณต๋ถํ๋ ์ค์ด๋ค. ์ด์์ค์ 3์ฐจ ์คํ๋ฆฐํธ๊ฐ ์์๋์๋ค. 3์ฐจ ์คํ๋ฆฐํธ์์ ๋งก๊ฒ๋ ๊ธฐ๋ฅ์ ๊ฒฐ์
, ๋ด์ ๋ณดํ์ด์ง
and so on...!
์์๋๋ก ํ๋ก ํธ์๋ํ์๋ค์ด ๋ง์ด ์ง์ณ์๋ ์ํฉ์ด๊ณ , ์ฃผ๋ง์ ๋๋์ ์ธ ๋ฆฌํฉํ ๋ง์ ์งํํด ๊ธฐ๋ฅ์ ๋ณด์ถฉํ ์ ์์๋ค. ๋งค์ผ ์ ์ค์ฌ๊ฐ๋ฉฐ ๊ตฌํํ๋ ๊ฑธ ์๊ณ ์๊ธฐ์ ๊ธฐ๋ง๊ณ ์ฌ ๋๋๊ณ 3์ฐจ ์คํ๋ฆฐํธ๋ ์ต๋ํ ๋ง์ ๊ธฐ๋ฅ์ ๋ง๋ค์ด์ผํ๋ค!
์ฌ์ค์ ์ข
๊ฐ์ ๋ง์ดํ๋ค! ๋ฐ๋ธ์ฝ์ค๋ฅผ ํ๋๋ด ์ด๊ฒ ํ๊ธฐ์ค์ธ์ง ๋ ๊ธด๊ฐ๋ฏผ๊ฐํ์ง๋ง ์ด์ ๊ณง ๋์กธ์ด๋ ์ข๋ค์~ ๐
๊ทธ๋ฆฌ๊ณ ์ด์ ํ๊ต ์ผ์ ์ด ์์ด์ ํ๋ก์ ํธ์ ๋ ๋ชฐ์
ํ ์ ์์ด์ ๋ ๊ธฐ๋๊ฐ ๋๋ค! ์ค๋ ์ง์ ๋์์ค์๋ง์ ์ต๋ํ ๋ง์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค. ๋ฉ์ธ ํ์ด์ง
, ์ฐ์ฌ ํ์ด์ง
, ๋ด ๊ฒฐ์ ์๋ฆฌ์ฆ ํ์ด์ง
, ์ข์์ ์๋ฆฌ์ฆ ํ์ด์ง
, ๊ฒฐ์ api ์ฐ๋
๋ฑ... ๊ธฐ๋ฅ์ ๋ค ๋ง๋ค๊ณ ํ๋ณตํ ๋ง์์ผ๋ก ์ข
๊ฐ์ ๋ง์ดํ๋ค!
์ด๋ฒ ํ๋ก์ ํธ์์ ๊ตต์งํ ํธ๋ฌ๋ธ์ํ ์ด ๋ง๋ค. ๋ด๊ฐ ๊ฒช์ง ์์์ง๋ง multi request๋ฅผ ํ๊ธฐ ์ํด ๋ค๋ฅธ ํ๋ก ํธ์๋ ํ์์ด ๊ณ ์ํ๋ ๊ธฐ์ต์ด์๋ค. api ํธ์ถ data ๋ถ๋ถ์ ์ฌ๋ฌ ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ด์๋ณด๋ผ ๋ ๋ฐ์ํ๋ ์ค๋ฅ์ธ๋ฐ, ๊ฒฐ๊ตญ Blob์ด๋ผ๋ ๊ฐ์ฒด๋ก data์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ (์ด๋ฏธ์ง, json)์ ๋ฌถ์ด ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ด๋ค. ํ์ง๋ง, ์ด๋ ๋ฐฑ์๋ ์ธก์์๋ ๋ณต์กํ ๋ก์ง์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง์ json์ ๋ฐ๋ก ์์ฒญํ๊ฒ๋ api๋ฅผ ๋ถ๋ฆฌํ์๋๋ฐ ์ค๋์ ๊ทธ ๋ถ๋ถ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์์ฝํ์๋ฉด ํ๋กํ ์ด๋ฏธ์ง์ json์ ๋ค์ด๊ฐ๋ ์ ๋ณด๋ ๋ชจ๋ db์ user ํ ์ด๋ธ์ ์กด์ฌํ๋๋ฐ 2๊ฐ์ api๊ฐ ๋์์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ locking์ ๊ฑธ์ณ ์ ๋๋ก ์๋ตํ ์ ์๋ค๋ ๊ฒฐ๋ก ์ด์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ถ๋ฆฌํ๋ api๋ฅผ ํฉ์น๊ณ , locking ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๊ฒ ์์ ํ๋ค.
ํ๋ก์ ํธ ๋ง๊ฐ์ผ์ด ์ฑํผ ๋ค๊ฐ์๋ค! ์ผ์ถ ๊ธฐ๋ฅ์ด ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ํ๋ก ํธ์๋ ์ธก์์ ๊ณตํต์ ์ผ๋ก ์ผ๊ด์ฑ์๊ฒ ์ฒ๋ฆฌํด์ผํ๋ ๋ฐ๋ก๋ฐ๋ก ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํด์ผํ๋ ์๊ฐ์ด ์๋ค! ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ๋ คํด๋ณผ ์ ์๋ ์ ํ ์ฌํญ์ (1) ๋ชจ๋ฌ
, (2) ๋ชจ๋ฌ๋ฆฌ์ค
, (3) ์์คํ
๊ฒฝ๊ณ
, (4) ๋ผ์ฐํ
(404, 500 ํ์ด์ง, ๋ค๋ก๊ฐ๊ธฐ)
์ ๋๊ฐ ์๋ค. ํ๋ก ํธ์๋ํ์ swal์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์์คํ
๊ฒฝ๊ณ ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๊ณ ๋ฐฑ์๋์์ ๋์ด์ค๋ ์ค๋ฅ ์ฝ๋๋ฅผ ๋งคํํด ์ ์ ํ๊ฒ ์ํฉ์ ๋ง์ถฐ ๊ฒฝ๊ณ ์ ๋ผ์ฐํ
์ ๊ฒฐ์ ํ๋ค.
๊ฐ์๊ธฐ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค. ์คํ๋ฆฐํธ ์ฐ์ ์ ๋ถ๋ช ๋น ์ ธ์์๋ ๊ธฐ๋ฅ์ด๊ณ , ๋ด๋น์์๊ฒ๋ ๊ทธ๋ ๊ฒ ์ ๋ฌ๋ฐ์๋๋ฐ ์ฝ๋๋ฅผ ๋ค์ง๊ณ ์ถ์ ์ ๋๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค. ์ง๊ธ ํ๋ก ํธ์๋ํ์์ ๋ ๋นผ๊ณ ๋ชจ๋ ๋์์ธ ์์ ์ ๋ค์ด๊ฐ ์ํ์๊ณ ์ด์ฉ ์ ์์ด ๊ธฐ๋ฅ์ ๋งก๊ฒ ๋์๋ค. ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ ๋จ์ผ ์ ํ๋ง ๊ฐ๋ฅํ๋ ์นดํ ๊ณ ๋ฆฌ ๋ฒํผ์ด ์ฌ์ค ๋ค์ค ์ ํ๊ณผ on/off๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฐ์ ์ ์ผ๋ก ๋ฒํผ๋ง๋ค ์ํ๋ฅผ ์ค์ ํ๊ณ api ํธ์ถ ์ ์ ํ๋ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ฐฐ์ด์ ๋ด์ ์ ์กํ๋ค. ์ด ๊ณผ์ ์์ paramsSerializer๋ฅผ axios์ ์ค์ ํด ์์ฒญ์ ๋ณด๋ด์ผํ๋๋ฐ ์ด ๋ถ๋ถ์ ๋ํด์ ์๊ฐ ๊ด๊ณ์ ๋ฆฌํฉํ ๋ง ์ ๋ค๋ฃจ๊ธฐ๋ก ํ๋ค!