HttpClient Deepdive
๐ BodyPublisher, BodyHandler ์ญํ ๐ HttpClient ์ค์ต BodyPublisher? BodyHandler? BodyPublisher์ BodyHandlers๋ ์์ฒญ๊ณผ ์๋ต์ ๋ณธ๋ฌธ์ ์ฒ๋ฆฌํ๋ ๋ฐ ์์ด ์ํธ ๋ณด์์ ์ธ ์ญํ ์ ํ๋ค. BodyPublisher๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๊ณ , BodyHandlers๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง๋ฅผ ์ ์ํ๋ค. ์ด ๋ ๊ตฌ์ฑ ์์๋ฅผ ์ ์ ํ ํ์ฉํ๋ฉด, HTTP ํต์ ์ ๋์ฑ ์ ์ฐํ๊ณ ํจ์จ์ ์ผ๋ก ๊ตฌํํ ์ ์๋ค. BodyPublisher HTTP ์์ฒญ์ ๋ณธ๋ฌธ์ ์ ๊ณต ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ด๋ป๊ฒ ์ ๊ณตํ ์ง ์ ์ BodyPublishers.ofString(String): ๋ฌธ์์ด ๋ฐ์ดํฐ BodyPublishers.ofByteArray(byte[]): ๋ฐ์ดํธ ๋ฐฐ์ด ๋ฐ์ดํฐ BodyPublishers.ofFile(Path): ํ์ผ ๋ฐ์ดํฐ BodyPublishers.ofInputStream(Supplier<InputStream>): ๋์ ์ผ๋ก ์์ฑ๋๋ ์ ๋ ฅ ์คํธ๋ฆผ BodyHandler HTTP ์๋ต์ ๋ณธ๋ฌธ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์๋ต ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ์ ์ BodyHandlers.ofString(): ๋ฌธ์์ด ๋ฐ์ดํฐ BodyHandlers.ofByteArray(): ๋ฐ์ดํธ ๋ฐฐ์ด ๋ฐ์ดํฐ BodyHandlers.ofFile(Path): ํ์ผ ๋ฐ์ดํฐ BodyHandlers.ofInputStream(): InputStream์ผ๋ก ๋ฐ์ดํฐ ์ ๊ณต HttpResponse.BodyHandler ํด๋์ค๋ BodyHandler๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ฌ๋ฌ ๊ฐ์ง ํธ๋ฆฌํ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค. ์ด๋ค ์ค ๋ค์๋ ์๋ต ๋ฐ์ดํธ๊ฐ ์์ ํ ์์ ๋ ๋๊น์ง ๋ฉ๋ชจ๋ฆฌ์ ์ถ์ ๋๋ฉฐ, ๊ทธ ํ ์๋ต ๋ฐ์ดํธ๋ ์์ ์์ค์ Java ์ ํ(ofString, ofByteArray ๋ฑ)์ผ๋ก ๋ณํ๋๋ค. ...