๐ ๊นํ๋ธ : ์ Do (GitHub)
๐ ํ๋ก์ ํธ ์์ฐ ์์ : ์ Do (Youtube)
ํ๋ก์ ํธ ์ฃผ์ : Talent For Sale ( ๋ฉํ ๋ฉํฐ ์๋น์ค )
์ฐธ์ฌ ์ธ์ : 6์ธ
๊ฐ๋ฐ ๊ธฐ๊ฐ : 12/12 ~ 12/26
์ฌ์ฉ ๊ธฐ์ : โ
๋ด๊ฐ ๋งก์ ์ญํ : โ
๐ ๋ด๊ฐ ๋งก์ ์ญํ
๊ฐ์ฅ ๋จผ์ , ์ด๋ฒ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ๋ก๊ทธ์ธ ๋จ์ ์นด์นด์ค ๋ก๊ทธ์ธ๊ณผ ์ผ๋ฐ ๋ก๊ทธ์ธ์ผ๋ก ๋๋ ์์
ํ๊ฒ ๋์๋ค.
์ฌ๊ธฐ์ ์นด์นด์ค ๋ก๊ทธ์ธ์ ์นด์นด์ค์์ ์ ๊ณตํ๋ REST API๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๊ณ , ์ผ๋ฐ ๋ก๊ทธ์ธ์ JWT์ Spring Security๋ฅผ ์ฌ์ฉํด ๊ตฌํํ๊ธฐ๋ก ์ฝ์ํ๊ณ ๊ฐ๋ฐ์ ์งํํ๊ฒ ๋์๋ค.
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด ์นด์นด์ค ๋ก๊ทธ์ธ์ผ๋ก ๋ฐ์์จ ์ ์ ์ ๋ณด์, ์ผ๋ฐ ํ์๊ฐ์ ์ผ๋ก ํ์๊ฐ์ ํ ์ ์ ์ ์ ๋ณด๋ฅผ ์ผ์น์์ผ DB์ credential ํ ์ด๋ธ์ ๋์ผํ๊ฒ ๋ฃ์ด์คฌ๊ณ , LoginMethod๋ผ๋ ํ ์ด๋ธ๋ก ์นด์นด์ค ๋ก๊ทธ์ธ , ์ผ๋ฐ ๋ก๊ทธ์ธ์ ๊ตฌ๋ถ ํด ์ฃผ์๋ค.
์ผ๋ฐ ๋ก๊ทธ์ธ ( jwt , spring security ) ์ ๋ด๊ฐ ๊ตฌํํ์ง ์์์ง๋ง ๋ก๊ทธ์ธ ๋จ ์์ ์ ํจ๊ป ํ๋ฉด์ ์ด๋์ ๋ jwt์ spring security๋ ๊ฒฝํํ๊ณ , ๊ณต๋ถํ๊ฒ๋ ์ข์ ์๊ฐ์ด์๋ค.
์ ๊ทธ๋ผ ์นด์นด์ค ๋ก๊ทธ์ธ์ ์ด๋ป๊ฒ ๊ตฌํํ์๋์ง, ๋ ๋ด๊ฐ ์์ ํ ๋๋จธ์ง ๊ธฐ๋ฅ๋ค์ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง ์์๋ณด๋๋ก ํ์!
๊ฐ์ฅ ๋จผ์ ์นด์นด์ค API๋ฅผ ์ฌ์ฉํ๊ธฐ์ํด ์นด์นด์ค Developers์์ ๋ด ์ ํ๋ฆฌ์ผ์ด์ (์ฐ๋ฆฌ ํ๋ก์ ํธ)์ ์ถ๊ฐํด์ผ ํ๋ค.
์์์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถ๊ฐํ๋ฉด ์๋์ ๊ฐ์ด ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ง๋ค์ด์ง๊ณ ํด๋ฆญํด ๋ค์ด๊ฐ์ ๊ด๋ฆฌ ํ ์ ์๊ฒ ๋๋ค.
์ ๋ฒ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ TMDB rest api์ฒ๋ผ apiํค๊ฐ ์ฃผ์ด์ง๊ณ , ์ด api๋ฅผ ์ฌ์ฉํด์ ์ฐ๋ฆฐ ์นด์นด์ค์ ์ํ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ฃผ๋ ์์ฒญ url๋ฅผ ๋ณด๋ด์ฃผ๋ฉด ๋๋ค.
์นด์นด์ค ๋ก๊ทธ์ธ ํญ์ ๋ค์ด๊ฐ๋ฉด ํ์ฑํ ์ค์ , OpenID Connect ํ์ฑํ ์ค์ ๋ฑ์ ์ต์
์ด ์๋๋ฐ ์ฌ์ฉ์ ํ์์ ๋ฐ๋ผ On , Off ํ๋ฉด ๋๊ณ , ์ค์ํ๊ฑด Redirect URI ์ด๋ค.
์ฐ๋ฆฌ์ Redirect URI๋ localhost:9090/kakao/login๋ก ์ค์ ๋์ด ์๋ค. ์นด์นด์ค์ ์ํ๋ ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต์ ๋ฐ๋ ์ฃผ์์ด๋ค.
์นด์นด์ค ๋ก๊ทธ์ธ์ ์ด์ฉํ๋ ค๋ฉด ๋จผ์ ์ธ๊ฐ์ฝ๋๋ฅผ ๋ฐ์์ผ ํ๊ณ , ๋ฐ์ ์ธ๊ฐ์ฝ๋๋ฅผ ์ด์ฉํด ํ ํฐ์ ๋ฐ์ ์ ์๋ค. ๋, ํ ํฐ์ ์ด์ฉํด ๋ก๊ทธ์ธํ ์ ์ ์ ์ ๋ณด , ํ ํฐ์ ์ ๋ณด ๋ฑ์ ๋ฐ์ ์ ์๋ค. ์ฐ๋ฆฐ ์ด๊ฑธ ์ด์ฉํด ์ฐ๋ฆฌ ์ฌ์ดํธ์์ ์นด์นด์ค ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ฉด ๋๋ค.
์์ฒญ url์ ๋ํ ์์ธํ ๋ด์ฉ์ ์นด์นด์ค ๋ฌธ์์ ๋์์๋ค.
์ธ๊ฐ ์ฝ๋๋ฅผ ๋ฐ๋ url์ ์ด๋ค ๋ฒํผ์ onclick ๋ฉ์๋์ ๋ด์ ๋ณด๋ด๊ฒ ๋๋ฉด, ์นด์นด์ค๋ ์ฐ๋ฆฌ๊ฐ ์ ํด๋์ redirect uri์ ํ๋ผ๋ฏธํฐ๋ก ์ธ๊ฐ์ฝ๋๋ฅผ ๋ด์ ๋๊ฒจ์ค๋ค. (์ฐ๋ฆฐ ์ปจํธ๋กค๋ฌ์์ ๋ฐ์ ์ํ๋ ์์ ์ ์งํํ๋ฉด ๋๋ค.)
์ด๋ฐ์์ผ๋ก ์นด์นด์ค๋ ์ธ๊ฐ์ฝ๋๋ฅผ ๋ฑ์ด์ฃผ๋ฉฐ ์ด ์ฝ๋๋ฅผ ์ด์ฉํด ํ ํฐ์ ๋ฐ์ ์ ์๋ค!
getToken ๋ฉ์๋ โ
์ด์ ์ด ํ ํฐ์ ๋ url์ ํ์ ์นด์นด์ค๋ก ์ํ๋ ์์ฒญ์ ๋ณด๋ด๋ฉด ์ํ๋ ์๋ต์ ๋ฐ์ ์ ์๋ค. ์ ์ ์ ๋ณด๋ ์์ ๊ฐ์ด ์ ์ด์จํ์์ ๋ฐ์ดํฐ๋ก ์ฃผ๊ธฐ๋๋ฌธ์ ์์ฒญ ๋ณด๋ด๊ณ , ๋ฐ์์ JSONparsing ํ๋ฉด๋๋ค. tmdb๋๋ ๊ทธ๋ ๊ณ ์ ์ฝ๋๋ ๊ทธ๋ ๊ณ ํ์์ด ๋์ผํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ ๋ฐ๋ก ์ฌ๋ฆฌ์ง ์๊ฒ ๋ค.
์นด์นด์ค์์ ์ ์ ์ ๋ณด๋ฅผ ๋ฐ์ ํ๋ก์ ํธ์ ์ฌ์ฉํ ๋ชจ์ต
์ฐ๋ฆฌ ์ฌ์ดํธ์ ๋ฉ์ธ ํ์ด์ง์ด๋ค.
๋ฉ์ธ ํ์ด์ง๋ ๊ตฌ๊ธ์ฒ๋ผ ์ต๋ํ ๊น๋ํ๊ฒ ํ๋ฉฐ ์ฃผ ๊ธฐ๋ฅ๋ง ๋ฃ๊ณ ์ถ์ด์ ์์ ๊ฐ์ด ์ค๊ณํ๊ฒ ๋๋ค.
๋ฉ์ธํ์ด์ง์์ ์ํ๋ ์นดํ
๊ณ ๋ฆฌ๋ฅผ ํด๋ฆญํ์ฌ ์ ์ ๊ฐ ์ํ๋ ์์
๋ค๋ก ๊ฐ ์ ์๋๋ก, ์์ฃผ ์ง๊ด์ ์ผ๋ก ๋ง๋ค๊ณ ์ถ์ด์ ์์ ๊ฐ์ด ๋ง๋ค๊ฒ ๋์๋๋ฐ, ์นดํ
๊ณ ๋ฆฌ๋ฅผ ๋ถ๋ฌ์ค๋๊ฑธ ์ฒ์์ DB์์ ์กฐํํ๋๊ฑธ๋ก ์ค๊ณ๋ฅผ ํ๋ค๊ฐ ์ด์ ๊ฐ์ด ํ๋ฉด ์๋ง์ ์ ์ ๊ฐ ์ ์บ๋ฆญํฐ๋ค์ ํด๋ฆญ ํ ๋๋ง๋ค ๋ํ ํด๋ฆญ ํ ์ค , ์๋ถ๋ฅ ์ ํ์ ๋ง์ ๋ DB๋ฅผ ๊ฐ๋ค ์์ผ ํ๋ค๋ ์์ฃผ ํฐ ๋จ์ ์ด ์์๊ธฐ์ JSON file์ ๋ฐ๋ก ๋ง๋ค์ด์ ๊ธฐ๋ฅ์ด ๊ตฌํ๋๋๋ก ํ๋ก์ ํธ ์ค๊ฐ์ ๋ฐ๊พธ๊ฒ ๋์๋ค.
์ํ๋ ์นดํ ๊ณ ๋ฆฌ์ ์บ๋ฆญํฐ๋ฅผ ํด๋ฆญํ๋ฉด
์ค๋ถ๋ฅ๊ฐ ๋์ค๋ฉฐ, ์ค๋ถ๋ฅ๋ฅผ ํด๋ฆญํ๋ฉด
์๋ถ๋ฅ๊ฐ ๋์ค๊ฒ ๋๋ค. ์๋ถ๋ฅ๋ฅผ ํด๋ฆญํ๋ฉด
ํด๋น ์ฃผ์ ์ ์์ ๋ค์ ๋์ดํด์ฃผ๋ ์ธ๋ค์ผ ํ์ด์ง๋ก ์ด๋ํ๊ฒ ๋๋ค.
์์์ ๋งํ๋ฏ ๊ฐ๋จํ๊ณ ๊ณ ์ ๋ ๊ธฐ๋ฅ์ DB์ฐ๊ฒฐ๊น์ง ํ๋ฉฐ ๊ตฌํํ๋ ๋๋ฌด๋ ๋นํจ์จ์ ์ด์๊ณ , JSON file์ ์ด์ฉํด ์์ฃผ ๊ฐ๋จํ๊ฒ ํด๊ฒฐ ํ ์ ์์๋ค.
๋จผ์ ์์ ๊ฐ์ ์ ์ ์ธ ์นดํ ๊ณ ๋ฆฌ json file์ ์์ ๋ง๋ค์ด ์ฃผ์๊ณ ,
์ด๋ ๊ฒ java script๋ก ๊ฐ๋จํ๊ฒ ๊ตฌํํด ์คฌ๋ค.
์ฐ๋ฆฌ ํ๋ก์ ํธ์์ JpaRepository interface๋ฅผ ์ด์ฉํ๋ค.
JpaRespository๋ฅผ ์ด์ฉํด์ Jpql๋ฌธ์ ์ฌ์ฉํ๊ฑด ์ด๋ฒ ํ๋ก์ ํธ๋ ์ฒ์ ํด๋ณธ๊ฑฐ์๋๋ฐ, ์๊ฐ๋ณด๋ค ๋๋ฌด ํธํด์ ๋๋๋ค. ์ด์ ์ ๋ฐฐ์ด๊ฑธ ๊น๋จน์ ์ ๋์๋ค.
@Query ์ด๋ ธํ ์ด์ ์ ์ํ๋ ์ฟผ๋ฆฌ๋ฌธ (jpql)์ ์์ฑํ๊ณ ์ถ์๋ฉ์๋๋ง ๋ง๋ค๊ณ Service๋จ์์ ์ฌ์ฉ๋ง ํ๋ฉด ๋๋ค.
ํด๋์ค ๊ด๋ จ ์ฝ๋๋ค์ด๋ค. ์ด๋ ค์ ๋์ ์ jqpl๋ฌธ์ด ์์ง ์ต์ํ์ง ์๊ณ , ์กฐ๊ธ์ด๋ผ๋ ํ๋ฆฌ๋ฉด (์คํ๋ ํํ์์ด ํ๋ฆฐ๊ฒฝ์ฐ) ๋ฐํ์์๋ฌ๊ฐ ๋๋๋ฐ, ์๊ฐ๋ณด๋ค ์ฐพ๊ธฐ ์ด๋ ค์ ๋ค.
ํ๋ก์ ํธ๊ฐ ๋๋ ๋๋ง๋ค ํ๋๋ง์ด์ง๋ง ๋ ํ๋จ๊ณ ์ฑ์ฅํ๊ฑธ ๋๊ผ๋ค.
์ด์ ๋ ๊ธฐ๋ฅ ๊ตฌํ๋ฟ๋ง์ด ์๋ ์ ๋ฐ์ ์ธ ์ฝ๋์ ๋ํด ๊ณ ๋ฏผํ๊ฒ ๋์๊ณ , ๊ฐ๋จํ ๊ธฐ๋ฅ์๋ ๋ ์๊ฐ์ ์๊ฒ ๋ ๊ฒ ๊ฐ๋ค. ํ๊ป ์์ ๊ฐ์ด ์ฐจ์์๋๋ฐ, ๋ฐฐ์์ ๋์ด ์๋ค๋๊ฑธ ๋๊ผ๊ณ ๋ญ๊ฐ ์์ฌ์ด ๋ ์๊ธฐ๊ฒ ๋์๋ค.
ํ์ง๋ง ์ ๋ฒ ํ๋ก์ ํธ๋์ ๊ฐ์ด ์ด์ ์ง์ง ๋ชป๋ง๋ค๊ฑด ์์ ๊ฒ ๊ฐ๋ค๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ๋ง๋ค ์ ์์ง๋ง ์ด์ ์ค์ํ๊ฑด ์ผ๋ง๋ ์ ๋ง๋๋์ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ๋ค.
์์ผ๋ก ๋ ์ด๋ค ๋ฒฝ?์ ๋ง์ฃผํ ์ง ์กฐ๊ธ ๋๋ ค์ฐ๋ฉด์ ๊ธฐ๋๋ ๋๋ ๊ฒ ๊ฐ๋ค.