์คํ๋ง์์ ์ ๊ณตํ๋ HTTP Client REST API ํธ์ถ์ ํ์ํ ํจ์๋ฅผ ์ ๊ณตํ๋ ํด๋์ค์ด๋ค.
HTTP Client Rest API๋?
๋จผ์ ์น์ด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ์ดํด๋ด์ผํ๋ค. ์น์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ก ๋๋๋ค. ํด๋ผ์ด์ธํธ ๋ถ๋ถ์ ์ฌ์ฉ์์๊ฒ ํ์ํ ์ ๋ณด๋ฅผ ์๋ฒ์๊ฒ ์์ฒญํ๊ณ , ์๋ฒ๋ ๊ทธ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ๋ค. ํด๋น ๊ณผ์ ์์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ํ๋ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ๋ถ๋ถ์ HTTP Client REST API๋ผ๊ณ ํ๋ค.
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ค๋ SPRING์ ๋ฐฑ์๋ ํ๋ ์์ํฌ๋ก ์๋ฒ์ ์ญํ ์ ๋ด๋นํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, ๋์ ๋ฐ๋ผ์ ์ธ๋ถ API์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํด์ผํ๋ ํด๋ผ์ด์ธํธ์ ์ญํ ์ ํด์ผํ ์๋ ์๋ค. ์๋ JAVA์์๋ URLConnect๋ HTTPClient ๊ฐ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ HTTP Client REST API๋ฅผ ํ์๋๋ฐ, Spring ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ฉด, ์ด ๋ ๊ฐ์ง๋ณด๋ค ํจ์ฌ ํธํRestTemplate๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.(URLConnect๋ HttpClient ์จ๋ณด๊ณ ์ค๋ฉด ๋๋ผ๊ฒ ์ง๋ง, ํจ์๊ฐ ํจ์ฌ ์ ๋์ด์๋ค. ใทใทใท )
๊ทธ๋ฌ๋ฉด, REST-Template๊ฐ ์ ๊ณตํ๋ ํจ์์๋ ๋ฌด์์ด ์๋์ง ํ์ธํด๋ณด์.
1. ๋ณด์ ๋งค์๋
2. RestTemplate์ ๋์ ์๋ฆฌ
- RestTemplate ์์ฑ ๋ฐ ๋ฉํ ๋ฐ์ดํฐ ์ธํ
์ฐ๋ฆฌ๊ฐ ๋ง๋ Application ๋ด๋ถ์์ ๋ค๋ฅธ ์๋ฒ์ REST API ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ํด RestTemplate์ ๋งค์๋๋ฅผ ํธ์ถํ๋ค. ์ด๋ REST Template๊ฐ ์์ฑ๋๊ณ , ๋์ฐฉํด์ผํ๋ URI, HTTP ๋งค์๋ ๋ฑ์ Template Header์ ๋ด๋๋ค. (REST Template์ด๋ ์ฐ๋ฆฌ๊ฐ REST ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ ์์ํ๊ฒ ํ๊ธฐ ์ํ ํ๋์ ์์์ด๋ผ ์๊ฐํ๋ ํธ์ด ํธํ๋ค.) - Request ๋ด์ฉ๋ฌผ์ ๋ด์ java ๊ฐ์ฒด๋ฅผ ์ง์ง RequestBody์ ๋ด์ ๋ฉ์ธ์ง ํ์
์ผ๋ก ๋ณํ
RestTemplate๋ MessageConverter๋ฅผ ์ด์ฉํด java ๊ฐ์ฒด๋ก ๋์ด์๋ requestEntity๋ฅผ request body์ ๋ด์ message(์๋ฅผ ๋ค์ด JSON ํํ)๋ก ๋ณํํ๋ค. ๋ฉ์ธ์ง ํํ๋ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค. - ๋ฐฐ๋ฌ๋ถ๋ฅผ ๋ถ๋ฌ์ ๋ฐฐ๋ฌํ ์ํฌ๋ฅผ ์ ๋ฌ.
ClientHttpRequestFactory๊ฐ ClientHttpRequest๋ฅผ ๋ฐ์์์ 2๋ฒ์์ ๋ง๋ Message๋ฅผ ์ ๋ฌํ๋ค. - ๋ฐฐ๋ฌ๋ถ๊ฐ ์ํฌ๋ฅผ ์ ๋ฌํ๊ณ , ๋ต์ฅ์ ๋ค๊ณ ์ด
์ด์ ์ค์ง์ ์ผ๋ก ClientHttpRequest๊ฐ HTTP ํต์ ์ผ๋ก ์์ฒญ์ ์ํํ๋ค. - ๋ง์ฝ์ ๋ฐฐ๋ฌ ๊ณผ์ ์์ ์๋ฌ๊ฐ ๋๋ฉด ๋ณธ์ฌ๋ก ์ ํ์ด
RestTemplate๊ฐ ์๋ฌ ํธ๋ค๋ง์ ํ๋ค. - ๋ต์ฅ์ ์ฐ์ฒด๊ตญ์์ ๋ฐ์์ ์ฒ๋ฆฌ (์ฐฉ๋ถ์ธ์ง, ๋ด์ฉ๋ฌผ ๊ด์ฐฎ์์ง ๋ฑ๋ฑ)
ClientHttpResponse์์ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ค๋ฅ๊ฐ ์์ผ๋ฉด ์ฒ๋ฆฌํ๋ค. - ๋ต์ฅ์ ์ฐ์ฒด๊ตญ์์ ๋ฐ์์ ์ฒ๋ฆฌ (์ฐฉ๋ถ์ธ์ง, ๋ด์ฉ๋ฌผ ๊ด์ฐฎ์์ง ๋ฑ๋ฑ)
MessageConverter๋ฅผ ์ด์ฉํด response body์ message๋ฅผ java Object๋ก ๋ณํํ๋ค. - ๋ต์ฅ์ ๋ค์ ์ฒ์ ์์ฒญ ๋ณด๋๋ ๊ณ ๊ฐ์๊ฒ ์ ๋ฌ
๊ฒฐ๊ณผ๋ฅผ ์ดํ๋ฆฌ์ผ์ด์ ์๊ฒ ์ ๋ฌ