restTemplate
Last updated
Last updated
Spring 3.0 ๋ถํฐ ์ง์
HTTP ์๋ฒ์์ ํต์ ์ ๋จ์ํํ๊ณ RESTful ์์น์ ์งํค๋ HTTP ํต์ template์ด๋ค. RESTful ํด๋ผ์ด์ธํธ๋ HTTP Method(GET, POST, PUT, DELETE, HEAD, OPTIONS)๋ฅผ ๋ชจ๋ ์ง์ํ๋ค. ๊ฒฐ๊ณผ๋ ๋ฌธ์์ด ๊ทธ๋๋ก ๋ฐ์ ์๋ ์์ผ๋ฉฐ, Converter๋ฅผ ์ด์ฉํด Object๋ก ๋ณํํ ์ ์๋ค.
Synchronous API
๊ธฐ๊ณ์ ์ด๊ณ ๋ฐ๋ณต์ ์ธ ์ฝ๋๋ฅผ ์ต๋ํ ์ค์ฌ์ค๋ค.
RestTemplate์ org.springframework.http.client
ํจํค์ง์ ์์ผ๋ฉฐ, HttpClient ๋ฅผ ์ถ์ํํด์ HttpEntity์ json, xml ๋ฑ ์ ๊ณตํด์ค๋ค.
์ดํ๋ฆฌ์ผ์ด์
์ด RestTemplate
์ ์์ฑํ๊ณ , URI, HTTP Method ๋ฑ์ header ๋ด์ ์์ฒญ
RestTemplate
์ HttpMessageConverter
๋ฅผ ์ฌ์ฉํ์ฌ requestEntity
๋ฅผ ์์ฒญ๋ฉ์ธ์ง๋ก ๋ณํ
RestTemplate
์ ClientHttpRequestFactory
๋ก ๋ถํฐ ClientHttpRequest
๋ฅผ ๊ฐ์ ธ์ ์์ฒญ
ClientHttpRequest
๋ ์์ฒญ๋ฉ์ธ์ง๋ฅผ ๋ง๋ค์ด HTTP ํ๋กํ ์ฝ์ ํตํด ์๋ฒ์ ํต์
RestTemplate
๋ResponseErrorHandler
๋ก ์ค๋ฅ๋ฅผ ํ์ธ
ResponseErrorHandler
๋ ์ค๋ฅ๊ฐ ์๋ค๋ฉด ClientHttpResponse
์์ ์๋ต๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ์ฒ๋ฆฌ
RestTemplate
๋ HttpMessageConverter
๋ฅผ ์ด์ฉํด ์๋ต๋ฉ์ธ์ง๋ฅผ java object(Class responseType) ๋ก ๋ณํ
Method
HTTP
์ค๋ช
exchange
any
HTTP header setting ๊ฐ๋ฅ, ResponseEntity๋ก ๋ฐํ
execute
any
Request/Response ์ฝ๋ฐฑ์ ์์ ๊ฐ๋ฅ
getForObject
GET
Java Object๋ก ๋ฐํ
getForEntity
GET
ResponseEntity๋ก ๋ฐํ
postForLocation
POST
java.net.URI ๋ก ๋ฐํ
postForObject
POST
Java Object๋ก ๋ฐํ
postForEntity
POST
ResponseEntity๋ก ๋ฐํ
delete
DELETE
HTTP DELETE ๋ฉ์๋๋ฅผ ์คํ
headForHeaders
HEAD
ํค๋์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ผ๋ฉด HTTP HEAD ๋ฉ์๋๋ฅผ ์ฌ์ฉ
put
PUT
HTTP PUT ๋ฉ์๋๋ฅผ ์คํ
patchForObject
PATCH
HTTP PATCH ๋ฉ์๋๋ฅผ ์คํ
optionsForAllow
OPTIONS
์ฃผ์ด์ง URL ์ฃผ์์์ ์ง์ํ๋ HTTP ๋ฉ์๋๋ฅผ ์กฐํ
๊ทธ ์ค์ HTTP header๋ฅผ ์ค์ ํ ์ ์๋ exchange
์ ๋ํด์ ์์ธํ ์์๋ณผ ๊ฒ์ด๋ค.
๋ค์๊ณผ ๊ฐ์ด HttpHeaders
๋ก header ๊ฐ๋ค์ ์ค์ ํ ์ ์๋ค. headers๋ HttpEntity
์ ๋ณด๋ด์ค ํ๋ผ๋ฏธํฐ์ ํจ๊ป ์ค์ ํด์ค๋ค.
UricomponentsBuilder
๋ ์ฌ๋ฌ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฐ๊ฒฐํด ํ๋์ URI๋ก ๋ง๋ค์ด ๋ฐํํด์ค๋ค.
requestBody ๊ฐ์ผ๋ก ๋ณด๋ด์ค ํ๋ผ๋ฏธํฐ๋ค์ Map<>
์ผ๋ก ๊ฐ์ ๋ฐ์ดํฐ ํํ์ ๋ง๊ฒ ์์ฑํด์ค๋ค.
์ด์ HttpEntity
์ headers์ requestBody ๊ฐ์ฒด๋ฅผ ๋ด์์ค๋ค.
๋ง์ฝ timeout์ ์ค์ ํ๋ ค๋ฉด HttpComponentsClientHttpRequestFactory
๊ฐ์ฒด๋ฅผ ์์ฑํด ์ค์ ํ ์ ์๋ค.
RestTemplate
์ผ๋ก ์ด์ HTTP ํต์ ์ ํ ์ ์๋ค.