2022. 6. 28. 16:08ใSpring
1๏ธโฃ RestTemplate๋?
์คํ๋ง์์ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก http ํต์ ์ ์ ์ฉํ๊ฒ ์ธ ์ ์๋ ํ ํ๋ฆฟ์ด๋ค.
REST API๋ฅผ ํธ์ถํ ์ ์๋ Spring ๋ด์ฅ ํด๋์ค๋ก REST API ํธ์ถ์ดํ ์๋ต๋ฐ์ ๋ ๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋๊ธฐ๋ฐฉ์์ด๋ค.
OkHttp๋?
REST API, HTTP ํต์ ์ ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด์ง ์๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
Okhttp ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด REST api, Http ๊ธฐ๋ฐ์ ์์ฒญ, ์๋ต์ ์ฒ๋ฆฌํ ์ ์๋ค.
//okhttp
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
-> build.gradle์ ์ถ๊ฐํด์ฃผ๊ณ refresh ํด์ค๋ค.
-> Spring boot๋ RestTemplate + Okhttp ์ฐ๊ฒฐํ์ ์ฌ์ฉํด์ ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค.
Okhttp ์ค์ ์ ์ํ OkhttpConfiguration ์ฐธ๊ณ ์ฌ์ดํธ
RestTemplate ์ค์ ํ์ผ
-> restTemplate.setErrorHandller์์ return false๋ก ํด์ค์ผ 4xx, 5xx ์๋ฌ๋ฅผ ์ง์ ์ฒ๋ฆฌํ ์ ์๋ค.
2๏ธโฃ RestTemplate ๋ฉ์๋
GET
- getForObject() : ์ฃผ์ด์ง URL ์ฃผ์๋ก HTTP GET ๋ฉ์๋๋ก ๊ฐ์ฒด์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ ๋ฐ๋๋ค.
- getForEntity() : ์ฃผ์ด์ง URL ์ฃผ์๋ก HTTP GET ๋ฉ์๋๋ก ๊ฒฐ๊ณผ๋ ResponseEntity๋ก ๋ฐํ๋ฐ๋๋ค.
POST
- postForObject() : POST๋ก ์์ฒญ์ ๋ณด๋ด๊ณ ๊ฐ์ฒด๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ ๋ฐ๋๋ค.
- postForEntity() : POST๋ก ์์ฒญ์ ๋ณด๋ด๊ณ ๊ฒฐ๊ณผ๋ก ResponseEntity๋ก ๋ฐํ ๋ฐ๋๋ค.
exchange() : HTTP ํค๋๋ฅผ ์๋ก ๋ง๋ค์๋ ์๊ณ ์ด๋ค HTTP ๋ฉ์๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
โ
์ฐธ๊ณ ๋ก REST API ์์ ๋ฅผ ์คํํ๊ธฐ ์ํด ์์ ์ฌ์ดํธ๋ฅผ ์ฐพ์๋ค!
https://jsonplaceholder.typicode.com/
์ด ์ฌ์ดํธ์์ GET, POST ๋ฑ์ ์์ฒญ์ ํด์ ํ ์คํธํด๋ณผ ์์ ์ด๋ค.
3๏ธโฃ GET ๋ฉ์๋
- getForObject()
: ์ฃผ์ด์ง URL ์ฃผ์๋ก HTTP GET ๋ฉ์๋๋ก ๊ฐ์ฒด์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ ๋ฐ๋๋ค.
(TestVo๋ก์ ๋งคํ์ jackson-databind๊ฐ ํด์ค๋ค. )
- getForEntity()
: ์ฃผ์ด์ง URL ์ฃผ์๋ก HTTP GET ๋ฉ์๋๋ก ๊ฒฐ๊ณผ๋ ResponseEntity๋ก ๋ฐํ๋ฐ๋๋ค.
์ด ์ฅ์ ์ ์๋ต์ ResponseEntity ๊ฐ์ฒด๋ก ๋ฐํ ๋ฐ์์ getForObject()์๋ ๋ฌ๋ฆฌ HTTP ์๋ต์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ด get ์์ฒญ์ ๋ํ ์๋ต ์ฝ๋, ์ค์ ๋ฐ์ดํฐ ๋ฑ์ ํ์ธํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ResponseEntity<T> ์ง๋ค๋ฆญ ํ์ ์ ๋ฐ๋ผ์ ์๋ต์ String์ด๋ Object ๊ฐ์ฒด๋ก ๋ฐ์ ์ ์๋ค.
- exchange()
: HTTP ํค๋๋ฅผ ์๋ก ๋ง๋ค์๋ ์๊ณ ์ด๋ค HTTP ๋ฉ์๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
4๏ธโฃ POST ๋ฉ์๋
- postForObject()
: POST๋ก ์์ฒญ์ ๋ณด๋ด๊ณ ๊ฐ์ฒด๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ ๋ฐ๋๋ค.
- postForEntity()
: POST๋ก ์์ฒญ์ ๋ณด๋ด๊ณ ๊ฒฐ๊ณผ๋ก ResponseEntity๋ก ๋ฐํ ๋ฐ๋๋ค.
-> header ์ ๋ณด๋ฅผ ํฌํจํด์ ๋ณด๋ผ ์๋ ์๋ค.
- exchange()
: HTTP ํค๋๋ฅผ ์๋ก ๋ง๋ค์๋ ์๊ณ ์ด๋ค HTTP ๋ฉ์๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง ์ปจํธ๋กค๋ฌ ํ๋ผ๋ฏธํฐ์ ํ๊ธ ๊นจ์ง ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ (0) | 2023.05.09 |
---|---|
Spring Session Util (0) | 2022.08.04 |
Jackson ObjectMapper๋? (0) | 2022.06.22 |
[Spring] @Async๋ฅผ ํ์ฉํ ๋น๋๊ธฐ ๋ฉ์๋ ๋ง๋ค๊ธฐ (0) | 2022.06.20 |
Spring @RestController ๋ฅผ ์ด์ฉํ ๊ฐ๋จํ ๊ฒ์ํ, ํ์ด์ง (0) | 2021.12.06 |