이번 포스팅은 안드로이드 개발에서 네트워크 통신을 위해 정말 많이 사용하는 Retrofit Library로 통신하는 3가지 방법에 대해 소개합니다. Retrofit 사용에 관한 자세한 설명은 하지 않습니다.
우선 Library들을 사용하기 위해서 dependency를 추가해 주면 됩니다.
dependencies {
...
// retrofit - required
implementation "com.squareup.retrofit2:retrofit:2.7.2"
// gson converter - required
implementation 'com.squareup.retrofit2:converter-gson:2.7.2'
// rxjava를 사용할 때 추가
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.6.2'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
// coroutine를 사용할 때 추가
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
}
그리고 java8 활성화를 위해 아래 코드도 추가합니다.
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
예제는 네이버영화 api 입니다.
예제를 따라 하려면 Client ID
와 Client Secret
을 발급 받아야 합니다.
영화 제목을 검색하면 이렇게 json string을 표시하도록 하겠습니다.
응답 모델과 ui는 같기 때문에 같은 코드를 사용 합니다.
Callback 방식은 Retrofit에서 기본으로 제공해주는 방식 입니다.
Callback 방식에서는 return type이 Call 입니다.
interface NaverApi {
@GET("v1/search/movie.json")
fun getMovie(@Query("query") query: String): Call<NaverMovieResponse>
}
Retrofit 객체 생성과 api 생성을 NetworkService.kt에서 합니다. 이 코드는 Coroutine에서 동일하게 사용합니다.