์คํ API๋ฅผ ํ์ฉํ์ฌ ๋ธ๋ก๊ทธ ๊ฒ์ ์๋น์ค๋ฅผ ๋ง๋ญ๋๋ค
-
ํ๋ก์ ํธ ๊ธฐ๊ฐ: 2023.03.18 ~ 2023.03.22
-
executable jar file ๋ค์ด๋ก๋ ๋งํฌ ์ ๋ณด : ๊ตฌ๊ธ ๋๋ผ์ด๋ธ , ๊นํ๋ธ
-
๋ธ๋ก๊ทธ ๊ฒ์ API
-
ํค์๋๋ฅผ ํตํด ๋ธ๋ก๊ทธ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
-
requestBody๋ฆ ํตํด ๋๊ธฐ๋ ์ ๋ ฌ๋ฐฉ์์ ๋ฐ๋ผ ๊ฒฐ๊ณผ์์ Sorting(์ ํ๋์, ์ต์ ์) ๊ธฐ๋ฅ์ ์ง์ ํฉ๋๋ค.
-
๊ฒ์ ๊ฒฐ๊ณผ๋ Pagination ํํ๋ก ์ ๊ณต๋ฉ๋๋ค.
-
requestBody์ ๋๊ธฐ๋ ๊ฒ์์์ค ํ์ ์ ๋ฐ๋ผ ์นด์นด์ค API์ ํค์๋๋ก ๋ธ๋ก๊ทธ ๊ฒ์ ๋๋ ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ ๊ฒ์ API๋ฅผ ํตํด ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
-
๊ฒ์ API๋ฅผ ํธ์ถํ ๋ KEYWORD ํ ์ด๋ธ์ ํค์๋์ ์นด์ดํธ ํ์๊ฐ ์ ์ฅ๋๊ณ ์ด๋ฏธ ์ ์ฅ๋ ํค์๋๋ผ๋ฉด count ํ์๋ง ์ฆ๊ฐํฉ๋๋ค.
-
-
์ธ๊ธฐ ๊ฒ์์ด ๋ชฉ๋ก ์กฐํ API
-
์ฌ์ฉ์๋ค์ด ๊ฒ์ํ ์์ 10๊ฐ์ ํค์๋๋ฅผ ์กฐํํ ํ์์ ํจ๊ป ์ ๊ณตํฉ๋๋ค.
-
์นด์ดํธ ํ์์ ๋ฐ๋ผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์ ๊ณตํฉ๋๋ค.
-
์ฌ์ฉ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๊ธฐ์ ์คํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- SpringBoot : 2.7.9
- h2 database: 2.1.214
- springCloudVersion : 2021.0.5 - Feign Client ์ฌ์ฉํ๊ธฐ ์ํ dependency
- springCloudAwsVersion : 2.4.2 - Feign Client ์ฌ์ฉํ๊ธฐ ์ํ dependency
- lombokVersion : 1.18.24 - MapStruct ์ฌ์ฉ์ํ dependency
- lombokMapstructBindVersion : 0.2.0 - MapStruct ์ฌ์ฉ์ํ dependency
- mapStructVersion : 1.5.3.Final - DTO ๊ฐ ๋งคํ์ ์ํด ์ฌ์ฉ
- OpenFeign : 4.10.0 - ์ธ๋ถ API ์ฐ๋์ ์ํด ์ฌ์ฉ
- guava : 30.1.1-jre - ImmutableMap ํ์ฉ์ ์ํด ์ถ๊ฐ
๐โโ๏ธ Feign Client ์ฌ์ฉ ์ด์
- ๊ฐ๋ฐํด์ผ ํ๋ ๋ธ๋ก๊ทธ ๊ฒ์ API๋ ์ธ๋ถ ์๋น์ค์ ์๋ต์ด ๋น์ฆ๋์ค ๋ก์ง์ ํฌํจ๋์ด ๋ฐ๋์ ์๋ต์ ๋ฐ์์ผ API๋ฅผ ์ฑ๊ณต ์ฒ๋ฆฌ ํ ์ ์๋ ๊ฒฝ์ฐ์ ํด๋น๋ฉ๋๋ค.
- ๋ฐ๋ผ์ ๋๊ธฐ ํต์ ๋ฐฉ์์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ฉฐ ์๋์ ์ผ๋ก ๊ฐํธํ๊ฒ interface์ annotation ์ ์ธ๋งํ๋ฉด ๊ตฌํ์ฒด๊ฐ ์์ฑ๋๋ Feign Client๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
๐โ MapStruct ์ฌ์ฉ ์ด์
- ๋๋ฉ์ธ ์๋น์ค์์ View๋ก๋ถํฐ ์ ์ถ๋ ฅ ๊ฐ์ ๋ฐ๊ฑฐ๋ ์ธ๋ถ ์ฐ๋ ์๋น์ค๋ก๋ถํฐ ์ ์ถ๋ ฅ ๊ฐ์ ๋ฐ์ ๋, ์์กด์ฑ์ ์ค์ด๊ณ ํ์ํ ๊ฐ๋ค ๋ง์ ์ฌ์ฉํ๊ธฐ ์ํด DTO๋ก ๋ณํํ์ต๋๋ค.
- ์ด ๋ ๋ง์ ํ๋ ๊ฐ๋ค์ ์ผ์ผํ ๋งคํํ๊ธฐ๋ณด๋ค ํด๋น ์์ ์ ์๋ํํด์ฃผ๋ MapStruct๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
- MapStruct๋ ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ์ง ์๊ณ ์ปดํ์ผ ํ์(์ด๋ ธํ ์ด์ ํ๋ก์ธ์)์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์๋ ์ฅ์ ์ด ์์ต๋๋ค.