8/3 ๋น
ํ ๋ฆฌ ๋ฉํ ๋ ์ฝ์นญ ์ผ์งRecord Validation ์ค๋ณต ๋ฌธ์ ๋ฌธ์ ๋ถ์๋ฉํ ๋ ํผ๋๋ฐฑ๋๋๊ธ ๊ด๋ จ ์ด์๋ฌธ์ ๋ถ์๋ฉํ ๋ ํผ๋๋ฐฑ์ข์์ api ์ค๊ณ๋ฌธ์ ๋ถ์๋ต๋ณ8/10 ๋น
ํ ๋ฆฌ ๋ฉํ ๋ ๋น๋๊ธฐ ์ง๋ฌธ ํผ๋๋ฐฑ๋ฌธ์ ์ํฉํผ๋๋ฐฑ
8/3 ๋น ํ ๋ฆฌ ๋ฉํ ๋ ์ฝ์นญ ์ผ์ง
Record Validation ์ค๋ณต ๋ฌธ์
๋ฌธ์ ๋ถ์
- ํน์ ID๋ฅผ ๊ฐ์ง Domain์ Record๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๋ ๋ก์ง์ด, ์๋น์ค ํด๋์ค๋ค์ด ์ด์ฉํ๋ Domain๋ค์ด ๊ฒน์น๊ธฐ ๋๋ฌธ์ ์ค๋ณต๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๋ฉํ ๋ ํผ๋๋ฐฑ
- AOP์ด์ฉ
- ํด๋น Validation ์ฝ๋๋ค์ Domain์ด ๋ฌ๋ผ๋ ๋์ ๋ฐฉ์์ ๊ฑฐ์ ์ ์ฌํ๊ธฐ์ AOP์ Generic ์ ์ด์ฉํด์ ํด๊ฒฐํ ์ ์์ ๊ฒ์ด๋ค.
- ์ค๋ณต ๊ฐ์
- ์ค๋ณต์ ์ฌํญ์ด ํฌ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ณต์ ๊ฐ์ํ๋ค. ํ์ ์์๋ ์ด๋ฐ ์ค๋ณต์ ๊ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ์ฌ์ค ์ด ๋ฌธ์ ๋ ํ ๋ณ๋ก ์ ๋๋ก ์ ํด ๋์ผ๋ฉด ๋ฌธ์ ๊ฐ ์๋๋ ๊ณ์ด์ ๋ฌธ์ ์ด๋ค. ์ด๋ฐ ๊ณ ๋ฏผ์ ํด ๋ดค๋จ ๊ฒ ๋ง์ผ๋ก๋ ๋์์ด ๋๋ค๊ณ ํ์ ๋ค.
๋๋๊ธ ๊ด๋ จ ์ด์
๋ฌธ์ ๋ถ์
- ์ฐ๋ฆฌ ์๋น์ค๋ ๋๋๊ธ์ 1๋จ๊ณ์ ๊น์ด๋ก ์์ฑ์ด ๊ฐ๋ฅํ๋ค. (๋๋๊ธ์ ๋๋๊ธ์ ๋ถ๊ฐ๋ฅ)
- ์ด๊ธฐ ๊ธฐํ์์๋ ๋๊ธ ํ์ด์ง๋ค์ด์ ์ ๋ถ๋ชจ ๋๊ธ๊ณผ ์์ ๋๊ธ์ ๊ฐ์ด ์นด์ดํธ ํด์ ๋ณด๋ด์ฃผ๊ธฐ๋ก ํ๋ค.
- ๊ทธ๋ด ๊ฒฝ์ฐ ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
- ๋ถ๋ชจ ๋๊ธ๊ณผ ์์ ๋๊ธ์ ๊ฒฝ์ฐ view ์ ๋๊ธ๋ค์ ์์ฑ ์๊ฐ์ด ์ค๊ตฌ ๋๋ฐฉ์ด ๋ ์ ์๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ์ ๋ ฌํ๋ ค๋ฉด ๋ฐฑ์์ ๋ ์ฝ๋๋ฅผ ํ๋ํ๋ ์ฐพ์๊ฐ๋ฉฐ ๋ฐ๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํ ๊ฒ์ด๋ค. โ ๊ตฌํ์ ๋์ด๋ ์์น ๋ฐ ์ฑ๋ฅ ์ ํ
- ์์ ์ด์ด์, ๋ค์ ํ์ด์ง๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํ ์ฟผ๋ฆฌ์์ ์ด๋ค ์กฐ๊ฑด์ ๊ฑธ ์ง ๋ง๋ ํ ์๊ฐ์ด ์ ๋์ง ์๋๋ค. โ ๊ตฌํ์ ๋์ด๋ ๊ธ ์์น
- View ์ ๋๋๊ธ ๋ถํฐ ์์ํ๋ ํ์ด์ง๊ฐ ์์ ์ ์๋ค. ์ด๊ฒ ๋ง๋ ๊ธฐํ์ธ๊ฐ? โ ํ๋ก ํธ ๊ตฌํ์ ๋์ด๋ ์์น
- ๋ฐ๋ผ์ ํ๋ก ํธ์ ํฉ์๋ฅผ ๋ดค๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ชจ ๋๊ธ์ ๊ฐฏ์๋ง Count๋ฅผ ํด์ ํ์ด์ง๋ค์ด์ ์ ์งํํ๋ค.
- ๋๋๊ธ์ ๊ฒฝ์ฐ 10๊ฐ ๋ฏธ๋ง์ ๋ค ๋ณด๋ด์ฃผ๊ณ 10๊ฐ ์ด์์ ๊ฒฝ์ฐ ๋ณด๋ด์ฃผ์ง ์๋๋ค.
- ๋๋๊ธ์ ๊ฐฏ์๋ฅผ ๋ฐ๋ก ๋ณด๋ด์ค๋ค. (childCount)
- view ์์์ 10๊ฐ ์ด์์ ๋๋๊ธ์ ๊ฐ์ง๊ณ ์๋ ๋๊ธ์ ๋๋๊ธ ๋์ ๋๋ณด๊ธฐ ๋ฒํผ์ด ์กด์ฌํ๋ค.
- ํด๋น ๋๋ณด๊ธฐ ๋ฒํผ์ ๋๋ฅผ ์ ๋๋๊ธ ์กฐํ API๋ก ์์ฒญ์ด ์ ํด๋น ๋๊ธ์ ๋๋๊ธ์ return ํด ์ค๋ค.
- ๋๋ฒ์งธ ์๊ฒฌ์ด ๊ด์ฐฎ์๊ฐ? ๊ทธ๋ฆฌ๊ณ ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ฝ๊ฒ ๊ตฌํํ ์๋ ์์๊น?
๋ฉํ ๋ ํผ๋๋ฐฑ
- ๋๋ฒ์งธ ์๊ฒฌ์ด ์คํ๋ ค ๋ ๊ด์ฐฎ๋ค!
- ์ฒซ๋ฒ์งธ์ ๊ฒฝ์ฐ ๋๋๊ธ๋ถํฐ ๋ ธ์ถ๋๋ ํ์ด์ง๊ฐ ์กด์ฌํ๋ค๋๊ฒ ์ข์ UI ๊ฐ์ง๋ ์๋ค.
- ๊ทธ๋๋ก ์งํํด๋ ์ข์๋ฏ
- ์ฒซ๋ฒ์งธ ์๊ฒฌ์ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ฒ๋ผ ์จ๋ฆฌ์ผ ๋๋ฒ ์นผ๋ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถ๊ฐํด์ ๊ด๋ฆฌํ๋ฉด ๊ตฌํํ ์ ์์๋ฏ
- ๋ค๋ง ๊ด๋ฆฌ์ ์ถ๊ฐ์ ์ธ ์ค๋ฒํค๋๊ฐ ๋ ๋ค. ๋๋๊ธ์ด ๋ฌ๋ฆด ๋๋ง๋ค ์ ์ฒด์ ์จ๋ฆฌ์ผ ๋๋ฒ๋ฅผ ๊ด๋ฆฌํด ์ค์ผ ํ๋ค.
- UI์์ด๋ ๊ตฌํ ๋น์ฉ, ์๊ฐ์ด๋ ํจ์จ์ฑ์ด๋ ๋๋ฒ์งธ ์๊ฒฌ์ด ๋ ๋ซ๋ค!
- ๋์ ํ์ ์๊ฐ๊ณผ ๊ฐ์ ๋ง์์ ํด์ฃผ์ จ๋ค.
๊ธฐ์ ์ ์ฌ๋งํ ๊ตฌํ์ ๋ค ๊ฐ๋ฅํ๋ค. ์๋๋๊ฑด ์๋ค. ๋ค๋ง ๋น์ฉ๊ณผ ์๊ฐ, ํจ์จ์ฑ์ ์ฐจ์ด๋ง ์์ ๋ฟ์ด๋ค.
์ข์์ api ์ค๊ณ
๋ฌธ์ ๋ถ์
- ์ข์์ on, off API ๋ถ๋ฆฌ/ํตํฉ์ ๋ํ ๊ณ ๋ฏผ
- ์ข์์ on, off API๋ฅผ ํ๋๋ก ์ ๊ณตํ๊ธฐ๋ก ๊ฒฐ์ ํ๋๋ฐ, ๊ด์ฐฎ์ ์ค๊ณ์ธ์ง ๊ถ๊ธํด์ ์ง๋ฌธ๋๋ฆผ
๋ต๋ณ
- ๊ด์ฐฎ๋ค๐
8/10 ๋น ํ ๋ฆฌ ๋ฉํ ๋ ๋น๋๊ธฐ ์ง๋ฌธ ํผ๋๋ฐฑ
๋ฌธ์ ์ํฉ
๋ฉํ ๋! ์ง๋ฌธ์ด ์์ด ์ฌ๋ ๋จ๊น๋๋ค. ํ์ฌ ์ธ์ฆ ๊ด๋ จ ํ๋ก ํธํ๊ณผ ์๊ฒฌ์ด ๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ด ์์ด์ ๋ฉํ ๋ ์๊ฒฌ ์ฌ์ญ๊ณ ์ถ์ต๋๋ค. ๋ฌธ์ ์ํฉ์
- ๋ก๊ทธ์ธ ์ access, refresh Token๊ณผ ์ ์ ์ ๋ณด ์ ๋ฌ
- ํ๋ก ํธ์์๋ access Token์ local storage์ ์ ์ฅ (refreshToken์ ์ด๋ ์ ์ฅํ๋์ง ๋ชป ๋ฌผ์ด๋ดค์ต๋๋ค.)
- ์ ์ ์ ๋ณด๋ ์ ์ญ ์ํ๋ก ๊ด๋ฆฌ
- ์๋ก๊ณ ์นจ ์ ์ ์ ์ ๋ณด๊ฐ ๋ ๋ผ๊ฐ
- ๋ฐ๋ผ์ ํ๋ก ํธํ์ ์๋ก๊ณ ์นจ๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ํธ์ถํ๋ API ์ธ์ ์ถ๊ฐ๋ก accessToken์ผ๋ก ์ ์ ์ ๋ณด๋ฅผ ์ป์ด์ค๋ API๋ฅผ ํธ์ถํ๊ธฐ๋ฅผ ํฌ๋งํจ
- ๋ฐฑ์๋ํ์ ์๋ก๊ณ ์นจ๋ง๋ค API ํธ์ถ์ด 2๋ฒ ์ค๋ ๊ฒ์ด ์ ์ ๊ฐ ๋ง์์ง๋ฉด ์๋ฒ์ ๋ถํ๊ฐ ์ปค์ง๋ ์ข์ง ๋ชปํ ๊ตฌ์กฐ์ด์ง ์์๊น ์ผ๋ คํจ
์
๋๋ค.๋ฐ๋ผ์ ์ ํฌ๊ฐ ์๊ฐํ๊ฒ
- JWT token์๋ ์ ์ ์ ๋ณด๊ฐ ์๊ธฐ์ ์๋ก๊ณ ์นจ ์ local storage์ JWT token์ ๋์ฝ๋ฉํด์ ๋ด๋ถ์ ์ ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ด
- ๋ก๊ทธ์ธ ์ ์ ์ ์ ๋ณด๋ localstorage์ ์ ์ฅ. ์๋ก๊ณ ์นจ ์ ์ ์ ์ ๋ณด๋ฅผ local storage์์ ๊ฐ์ ธ์ด.
์
๋๋ค. ์ฒ์์ ์ ํฌ ์๊ฒฌ์ด ๋ ํฉ๋ฆฌ์ ์ด๋ผ ์๊ฐํ๋๋ฐ, ๋ณด์ ๊ด๋ จํด์ ํ๋ก ํธ์์ JWT ๋ฅผ ๋์ฝ๋ฉ ํ๋ ๊ฒ์ด ์์ ํ์ง, ์ ์ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๊ฐ๋ฅํ๋ค๋ฉด localstorage์ ์๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ๋ณด๋ค ์ฐจ๋ผ๋ฆฌ api๋ฅผ ์ถ๊ฐ๋ก ํธ์ถํ๋ ๊ฒ์ด ๋ณํ์ ๋ ์ ๋์ํ ์ ์๋๊ฒ ์๋์ง ๋ฑ์ ๋ํ ์๊ฐ์ ํ๊ณ ๋๋ ์ด๋ค๊ฒ ์ ๋ต์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด์ ๋ํด์ ๋ฉํ ๋ ์๊ฒฌ์ ์ด๋ ํ์ ์ง๊ฐ ๊ถ๊ธํฉ๋๋ค!
๋ง๋ถ์ฌ ๋ง์๋๋ฆฌ์๋ฉด, ์ ์ ์ ๋ณด์๋ ๋ณด์์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์๋ค๋ ๊ฐ์ ์ด ์์ต๋๋ค.
ํผ๋๋ฐฑ
๋ฉํ ๋ :
์ํ๋์ ์๊ฒฌ๋๋ก ํ๋๊ฒ ๋ง๋๊ฑฐ ๊ฐ์ต๋๋ค.
ํ ํฐ์ ๊ทธ๋ ๊ฒ ์ฐ๋ ค๊ณ ํ๋๊ฑฐ๋๊น์! ๊ทธ๋ฆฌ๊ณ ํ ํฐ์๋ ํจ์ค์๋ ๊ฐ์ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ์ง ์์ผ๋๊น ํ๋ก ํธ์๋์์ ๋์ฝ๋ฉ ํด๋ ๋ฉ๋๋ค! ใ
ใ
ใ
์ ์๊ฐํ์
จ๋ค์!!
๋ฐ์ํ :
JWT๋ฅผ ๋์ฝ๋ฉ ํ๋๋ฐ์ ์์ด์ ๊ฑฐ๋ถ๊ฐ์ ๊ฐ์ง ํ์๊ฐ ์๋ค๋ ๋ง์์ด์์ฃ ? ๋ต๋ณ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ถ๊ฐ์ ์ผ๋ก
์ ์ ์ ๋ณด์ ์์ ์ด ์ฆ๋ค๋ฉด ์๋ก๊ณ ์นจ ์ ์๋ก ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ด ๋ ๋์์ง,
์๋ก๊ณ ์นจ ์ API๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ํธ์ถํ๊ฒ ๋๋ ๊ฒ์ด ์๋ฒ์ ๊ณผ๋ถํ๋ฅผ ์ด๋์ ๋ ์ค ์ง
์ ๋ํด์๋ ๊ถ๊ธํฉ๋๋ค!
๋ฉํ ๋ :
์์ ์ด ์ฆ๊ฒ ์ผ์ด๋๋ ์ ์ ์ ๋ณด ์ ์ฒด๋ฅผ ํ ํฐ์ ๋ฃ์๋ ค๊ณ ํ์๋๊ฑด๊ฐ์?
๋ฐ์ํ :
์ ๊ผญ ๊ทธ๋ฐ๊ฑด ์๋๋ฐ ํ๋ก ํธ ์ชฝ์์ ๋์ค์ ์ ์ญ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์ ์ ๋ณด๊ฐ ์ข ๋ง์ด ํ์ํ ์ ์๋ค๊ณ ๋ง์์ ํ์
์, ๋์ค์ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ์ง ํ์คํ์ง ์์์ ์ฌ์ญค๋ดค์ต๋๋ค.
๋ฉํ ๋ :
์ ์ญ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉด์ ๋ฆฌํ๋ ์ฌ ํ ๋๋ ๋จ์์๊ฒ ํ๊ธฐ ์ํด์๋ ์ฌ๋ฌ๋ถ์ด ์ด๋ฏธ ๋ง์ํ์ ๋๋ก, local storage๋ฅผ ์ด์ฉํด๋ฌ๋ผ๊ณ ์๊ธฐํด์ฃผ์ธ์! ํ ํฐ์๋ id ๊ฐ๋ง ๋ค์ด๊ฐ๋๊ฒ ์ผ๋ฐ์ ์ด๊ณ ๋ณดํต ํ๋ก ํธ์์๋ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์๋๊ฒ๋ค์ local storage๋ฅผ ํ์ฉํ๋๊ฒ์ผ๋ก ์๊ณ ์์ต๋๋ค.
๋ฐ์ํ :
๋ต ์ข์ ์กฐ์ธ ๊ฐ์ฌํฉ๋๋ค ๋ฉํ ๋!