๋ ํธ๋กํ์ ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ ์ ๋ฐฑ์๋์์ ํต์ ์ ์ํด์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค!
๋ ํธ๋กํ์ OkHttp๊ธฐ๋ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ๋ฐ, ์ฌ์ค์ OkHttp๋ง ์ฌ์ฉํด๋ ํฐ ์ด๋ ค์ ์์ด ๋ฐฑ์๋์์ ํต์ ์ด ๊ฐ๋ฅํ๋ค!
๊ทธ๋ ๋ค๋ฉด ์ OkHttp๋ฅผ ๋๊ณ OkHttp๊ธฐ๋ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Retrofit ์ฌ์ฉํ ๊น? ๊ทธ ์ด์ ๋ ์๋์ ๊ฐ๋ค!
public interface retropitService {
@Get("/get")
Call<String>..;
}
@๋ค์์ REST API์ ์ด๋์ ํด๋นํ๋์ง ์ง๊ด์ ์ผ๋ก ํ์ธ์ด ๊ฐ๋ฅ!
์ธํฐํ์ด์ค ์ ์ธ
๋ ํธ๋กํ์ ์ฌ์ฉํ๊ธฐ ์ํ ์ฒซ ๋จ๊ณ!
API์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด์ผํ๋ค!
interface ApiService {
@GET("getUser/{id}")
suspend fun getPost(@Path("id") postId: Int): Response<Post>
}
suspend fun getPost(@Path("id") postId: Int): Response
suspend
: ์ฝ๋ฃจํด์ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ์ ์ผ๋ก ํธ์ถ!
@Path("id") postId: Int
: Retrofit ์ฃผ์!
"id"๋ผ๋ ๊ฒฝ๋ก ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ๋ฉฐ, ํต์ ํ ์๋ํฌ์ธํธ ๊ฒฝ๋ก์ {id} ๋ถ๋ถ์ ๋ค์ด๊ฐ ๊ฐ์ ๋ํ๋ธ๋ค! ์ด ๊ฐ์ ๋ฉ์๋์ postId ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ
Response<Post>
: Retrofit์์ ์ ๊ณตํ๋ Response๋ผ๋ ํด๋์ค๋ฅผ ๋ฐํํ๋ค! ์ด ํด๋์ค๋ ์๋ฒ์ ํต์ ํ HTTP ์๋ต์ ๋ํ๋ด๊ณ Post๋ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๊ณ ํ์ฑํ๊ธฐ ์ํ Kotlin์ด ์ธ์ํ ์ ์๋ ๋ฐ์ดํฐ ํด๋์ค!
์ธ์คํด์ค ์์ฑ
์ด์ ์์์ ๋ง๋ค์ด๋ ์ธํฐํ์ด์ค๋ฅผ ์ค์ ์ธ์คํด์ค๋ก ๋ง๋ค์ด์ผํ๋ค!
๊ทธ ์ ์ Retropit์ ์ด์ฉํด createํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ retropit๋ถํฐ ๋จผ์ ์ธ์คํด์ค ์์ฑ!
val retrofit = Retrofit.Builder()
.baseUrl("ํต์ ํ ์ฃผ์")
.addConverterFactory(GsonConverterFactory.create())
.build()
API ์๋น์ค ์์ฑ
์ด์ ์ ๋ง ์์์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์ธํฐํ์ด์ค apiService๋ฅผ ์ธ์คํด์ค๋ก ๋ง๋ค์!
val apiService = retrofit.create(ApiService::class.java)
API ํธ์ถ
์์์ ๋ง๋ apiService๋ฅผ ์ด์ฉํด์ ์ด์ API๋ฅผ ํธ์ถํ๋ค!
apiService์ ๋ง๋ค์ด๋์๋ getPost๋ฅผ ์ฌ์ฉํด์ ํต์ ์ ์์!
์ด ํ ๋์ด์ค๋ ๋ฐ์์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์ญ ๊ตฌํํ๋ฉด ๋๋ค!
val response = apiService.getPost(1)
if (response.isSuccessful) {
val post = response.body()
// ์๋ต ๋ฐ์ ๋ฐ์ดํฐ์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ!
} else {
// ์๋ฌ ์ฒ๋ฆฌ
}