์ด๋ฏธ์ง ์
๋ก๋๊ฐ ๋๋ ค ์ฌ์ฉ์์๊ฒ ๋ก๋ฉ ์ค์์ ์๋ ค์ค ๋ก๋ฉ UI๊ฐ ํ์ํ๋ค. ์ด๋ฏธ์ง๋ฅผ ์
๋ก๋ํ๋ ๊ณผ์ ์์ ์๊ฐ์ด ๊ฑธ๋ ค, ์ฌ์ฉ์๊ฐ ์ด๋ฏธ์ง๊ฐ ์
๋ก๋๋๋ ๋์ ์๋ฌด๋ฐ ํ์๊ฐ ์์ด ์ด๋ฏธ์ง๊ฐ ์
๋ก๋๋๊ณ ์์์ ์ธ์ํ๊ธฐ ์ด๋ ค์ ๋ค. ๊ทธ๋์ ์ฌ์ฉ์์๊ฒ ์
๋ก๋ ์ค์์ ๋ช
ํํ ์๋ฆฌ๊ธฐ ์ํด์ ๋ก๋ฉ UI๊ฐ ํ์ํ๋ค. ๋๋ ์ด๋ฏธ์ง ์
๋ก๋ ์ ์๋จ์ progressBar๋ฅผ ํตํด ์
๋ก๋ ์งํ๋ฅ ์ ํ์ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. spinner, skeleton ๋ฑ ๋ก๋ฉ UI ์ค์ progressBar๋ฅผ ์ ํํ ์ด์ ๋ ๋ค๋ฅธ UI๋ฅผ ๊ฐ๋ฆฌ์ง ์๊ณ ์ ์ญ์์ ๋ก๋ฉ ์ํ๋ฅผ ๊ด๋ฆฌํ์ฌ ํ์ํ๊ณ ์ถ์๋ค. OnUploadProgress๋ฅผ ํ์ฉํด ProgressBar์ ์งํ๋ฅ ์
๋ฐ์ดํธํ๊ธฐ ProgressBar ์ ์ญ ์ํ๊ด๋ฆฌ ์ด๋ฏธ์ง ์
๋ก๋๋ฟ๋ง ์๋๋ผ ์ ์ฅํ๊ธฐ ๋ฑ์..
axios
์ฒ์ ํด๋ณด๋ ์์
๋ค์ด๋ก๋๋ค! ใ
ใ
๋ฐฑ์ค๋์์ ์์
ํ์ผ์ด๋ ์์
ํ์ผ๋ช
์ response์ ๋ด์์ ๋ณด๋ด์ฃผ์ ๋ค๊ณ ํด์ ํ๋ก ํธ์์ ๋ฐ์์ ๋ค์ด๋ก๋ํ๋ ๋ถ๋ถ์ ๊ตฌํํด ๋ดค๋ค ๊ทธ์ ์! Blob (Binary Large Object) ๋์ฉ๋์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๊ฐ์ฒด๋ก, ๋ฐฑ์ค๋์์ ์์
ํ์ผ์ ๋ง๋ค์ด์ ํ๋ก ํธ์ ๋ฐ์ ๋ Blob๊ฐ์ฒด๋ฅผ ํ์ฉํ๋ฉด ๋๋ค 1. api ํธ์ถ axiosT.post('/test/excel-download', { ...form }, { responseType: 'blob', headers: { 'Content-Type': 'multipart/form-data', }, }, ) 2. ์์
๋ค์ด๋ก๋ api๋ก ํธ์ถ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก Blob ๊ฐ์ฒด๋ฅผ ์์ฑํด ์ค๋ค a ํ๊ทธ๋ฅผ ์์ฑํด์ href์ Blob ..
ํ์ฌ ์ํฉ๋๋ jwt๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐaccessToken๊ณผ refreshToken์ ๋ชจ๋ ์ฟ ํค์ ๋ณด๊ดํ๊ณ ์๋ค.๋ชจ๋ httpOnly, Secure ์ต์
์ ์ฃผ์ด ์์ ํ๊ฒ ์ฌ์ฉํ๊ณ ์ ํ๋ค.httpOnly: document.cookie๋ฅผ ํตํด ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ๊ทผ์ ๋ง๋๋ค. Secure: HTTPS๋ก ํต์ ํ๋ ๊ฒฝ์ฐ์๋ง ์ฟ ํค๊ฐ ์ ์ก๋๋ค. ์ ์ฒด์ ์ธ ํฐ ๊ทธ๋ฆผ์ ์๋์ ๊ฐ๋ค.accessToken ์ฌ๋ฐ๊ธ ์ refreshToken์ ์ ๊ฐฑ์ ํ๋๋... ํ ์๋ ์์ง๋ง ์๋น์ค ์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ต๋ํ ์ค๋ ์ ์งํ๊ธฐ ์ํด ์ด๋ ๊ฒ ์งํํ๋ค. token์ ์ด๋์ ์ ์ฅํ๊ณ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ์ง์ ๋ํด ์ ๋ต์ ์๊ณ ์ฃผ์ด์ง ์ํฉ์ ๋ง๊ฒ ์ฌ์ฉํ๋ฉด ๋๋ ๊ฑฐ ๊ฐ๋ค.axios ์ธ์คํด์ค ์์ฑํ๋ก ํธ์์ ์ฟ ํค๋ฅผ ์ง์ ๋ค๋ฃฐ ์ ์์ด(httpOnly์ต์
..