๐ฑ dreaming DiNO
[Kotlin] Retrofit (๋ ํธ๋กํ) ์ด๋? ๋ณธ๋ฌธ
Retrofit : (๊ธฐ๊ณ ์์ ์๋ ์๋ ๋ถํ ๋ฑ์) ์๋ก ์ฅ์ฐฉํ๋ค / ๋ฃ๋ค / ์ ๊ณตํ๋ค
์๋๋ก์ด๋์์์ Retrofit : ์๋ฒ์์ HTTP ํต์ ์ ํตํด ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ฑ์์ ํน์ ํํ๋ก ๋ฐ์๋ณผ ์ ์๊ฒ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ ํธ๋กํ์ ํ ๋ฌธ์ฅ์ผ๋ก ์ ์ํ๋ผ๊ณ ํ๋ฉด
์๋ฒ์ HTTP ํต์ ์ ํด์, ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฑ์์ ์ถ๋ ฅํด ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๊ฒ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ผ๋ฐ์ ์ธ ์ฑ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๋คํธ์ํฌ ํต์ ์ผ๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ ์ด ์ ๋ณด๋ฅผ ํ๋ฉด์ ๋ฟ๋ฆฌ๊ธฐ๋ ํ๋ฉฐ, ์ ๋ ฅ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ฑ์ ๊ธฐ๋ฅ๋ค์ด ๊ตฌํ๋ผ ์๋ค. ์ด๊ฑธ ๋คํธ์ํน ๊ธฐ๋ฅ์ด๋ผ๊ณ ํ๋ค.
์์ฆ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์์ REST API๋ผ๋ ๋ฐฉ์์ ์จ์ ๋คํธ์ํฌ ํต์ ์ ํ๋ค๊ณ ํ๋ค.
AsyncTask์ HttpURLConnection์ ์ฐ๋ฉด ๋์ง๋ง ์ง์ ๊ตฌํํด์ค์ผ ํ๋ ๊ฒ๋ค์ด ๊ฝค ๋ง๋ค.
๋คํธ์ํฌ ์ฐ๊ฒฐ๊ณผ ํด์ , ๋ฐ์ดํฐ ํ์ฑ, ํ์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ ํด๋์ค์ ์ ์ฅ, ์๋ฌ์ฒ๋ฆฌ ๋ฑ. ์ด๊ฒ๋ค์ ์ฐ๋ฆฌ ๋์ ์ฒ๋ฆฌํด์ฃผ๋ ๋๊ตฌ๋ ์์ ๊ฒ์ด๋ค. ๊ทธ ์ค ํ๋๊ฐ ๋ ํธ๋กํ์ด๋ค.
๋ ํธ๋กํ์ ์จ๋ณธ ๊ฒฐ๊ณผ, ์์กด์ฑ ์ถ๊ฐ๋ฅผ ์ ์ธํ๊ณ ํฌ๊ฒ 5๊ฐ์ง๊ฐ ํ์ํ๋ค.
- ์น ์๋ฒ(๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ์จ์ ๋ ํธ๋กํ์ ์ธ ์๋ ์๋ค)
- ์น ์๋ฒ ์ฃผ์๋ฅผ ๋ณ์๋ก ๊ฐ์ง ํด๋ผ์ด์ธํธ ํด๋์ค (XXXApiClient.java ํํ๋ก ์ฐ๊ธฐ๋ ํ๋๋ผ. ์ญ์ ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ์ธ ์๋ ์๋ค)
- PHP ํ์ผ์ ์ ๊ทผํด ํด๋น ํ์ผ์ ๊ธฐ๋ฅ์ ์ํํ๋ ํจ์๋ค์ ๋ด์ ์ธํฐํ์ด์ค (๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ์ด๋ค๋ฉด ํ์์์ ์๋ ์๋ค)
- PHP ํ์ผ : ์๋ฒ์ ์ฟผ๋ฆฌ ๋๋ ค์ผ ํ๋๊น ๋น์ฐํ ํ์.
- ๋ชจ๋ธ ํด๋์ค : ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ๋ฅผ ์ฌ์ฉํ ๋ ์ฐ๋ ๊ทธ ํด๋์ค. POJO, DTO ๋ฑ ๋ถ๋ฆฌ๋ ๋ฐฉ์์ ๋ง์๋ฐ ์ฌ๊ธฐ์ ๋ชจ๋ธ ํด๋์ค๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์๋ฒ์์ ๊ฐ์ ๋ฐ์์ ๋ด์ ๋ณ์๋ฅผ ์ ํ ๋ ์ฌ์ฉํ๋ค.
๋ ํธ๋กํ์์ ์ด๋ ธํ ์ด์ (@)์ด๋ผ๋ ํน์ ์ฃผ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ ธํ ์ด์ ์ ๋ํ ์ฝ๊ฐ์ ๊ณต๋ถ๋ ํ์ํ๋ค.
์น ์๋ฒ์ ์ฃผ์๋ฅผ ๋ณ์ ํน์ ์์๋ก ํ ๋นํ ๋ http://๊ฐ ๋ค์ด๊ฐ์ผ ํ๋ฉฐ, ์ฃผ์ ๋์ /๋ฅผ ๋ถ์ฌ์ค์ผ ํ๋ค.
๊ณต์๋ฌธ์๋ฅผ ์ฝ์ด๋ณด๋ฉด baseURL()์ ์ค์ ๋ ์๋ฒ URL์ /๊ฐ ์๋ค.
๊ทธ๋ฐ๋ฐ ์ค์ ๋ก ์ด๊ฑธ ์จ์ฃผ์ง ์์ผ๋ฉด ์ฑ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ฌผ๊ฒ ๋ฐ์ํ๋ค. ๊ทธ ๋ค๋ก๋ http://~~~.~~.~~.~~/ ์์ผ๋ก ๋ด ์น ์๋ฒ์ ์ฃผ์๋ฅผ ์ ์ด์ฃผ๊ธฐ ์์ํ๋ค.
๋ณ์ ํน์ ์์๋ก ์ค์ ํ ์น ์๋ฒ URL์ ๋ง์ง๋ง์๋ /์ ๊ผญ ๋ฃ์ด์ฃผ์.
๊ฐ ์๋ฐ ํด๋์ค์ ์ธํฐํ์ด์ค, php ํ์ผ์ ์ฝ๋๋ค์ ์์ ๋ง๋ค ์กฐ๊ธ์ฉ ํํ๊ฐ ๋ค๋ฅด์ง๋ง ๊ธฐ๋ณธ์ ์ธ ํ์ ๊ฐ๋ค.
์ด๊ฒ์ ์์ ์ฝ๋๋ค์ ๋ถ์ํ๋ฉด์ ์ ์ด ํด๋์ค์ ์ธํฐํ์ด์ค๊ฐ ํ์ํ์ง, ์ด ์ฝ๋๋ ๋ฌด์จ ๊ธฐ๋ฅ์ ํ๋์ง๋ฅผ ์์ ์ด ์ง์ ๊ณต๋ถํ๊ณ ๋ถ์ํด์ผ ํ ๊ฒ ๊ฐ๋ค.
๊ตฌ๊ธ์ ํ๊ธ, ์์ด๋ก ๊ฒ์ํ๋ฉด ๋ค์ํ ์์ ๋ค์ด ์์ผ๋ ์ฐธ๊ณ ํด๋ณด์.
์ฐธ๊ณ ๋ก ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ์ธ ๋ ์ด๋ค ์๋ต์ด ์ค๋์ง ํ์ธํ๊ณ ์ถ๋ค๋ฉด POSTMAN(ํฌ์คํธ๋งจ) ์ฌ์ฉ
'Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin] APIํธ์ถํด์ ๋ฐ์ JSON Dataํ์ฑํ๊ธฐ (0) | 2021.12.08 |
---|---|
[Kotlin] Retrofit - Logging Interceptor ์ ํ์์ฑ (0) | 2021.12.07 |
[Kotlin] ๊ธฐ๋ณธ๋ฌธ๋ฒ-2 (0) | 2021.11.24 |
[Kotlin] ๊ธฐ๋ณธ๋ฌธ๋ฒ-1 (0) | 2021.11.24 |
[Android] MVVM (0) | 2021.11.11 |