가장 큰 장점 세개로 속도, 편의성, 가독성이 존재합니다.
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
// 현재 기재되어 있는 Retrofit2의 버전은 최신 버전입니다!
<uses-permission android:name="android.permission.INTERNET" />
class RetrofitBuilder {
val retrofit = Retrofit.Builder()
.baseUrl("https://api.github.com/")
.client(OkHttpClient())
.addConverterFactory(GsonConverterFactory.create())
.build()
val githubApi = retrofit.create(GithubAPI::class.java)
}
baseUrl 함수에는 절대로 변하지 않는 주소값을 넣어줍니다
API의 주소가 https://api.github.com/users/HYE0N1127 일 시에 https://api.github.com/ 주소만 넣어주세요!
addConverterFactory에 GsonConverter를 추가해줍니다.
Gson이란? json 구조를 띄는 직렬화된 데이터를 JAVA의 객체로 역직렬화, 직렬화 해주는 자바 라이브러리입니다.
data class GithubInfo (
val avatar_url: String?,
val bio: String?,
val login: String?,
val name: String?
)
interface GithubAPI {
@GET("users/HYE0N1127")
fun getGithubInfo(): Call<GithubInfo>
}
class MainActivity : AppCompatActivity() {
call.enqueue(object : Callback<GithubInfo> {
override fun onResponse(call: Call<GithubInfo>, response: Response<GithubInfo>) {
val userInfo = response.body()
Log.d("response","통신 성공")
}
override fun onFailure(call: Call<GithubInfo>, t: Throwable) {
Log.d("error", t.message.toString())
}
})
}
override fun onResponse(call: Call<GithubInfo>, response: Response<GithubInfo>) {
val userInfo = response.body()
Log.d("response","통신 성공")
override fun onFailure(call: Call<GithubInfo>, t: Throwable) {
Log.d("error", t.message.toString())
}
fun getImageURL(imageURL: String) {
Glide.with(applicationContext)
.load(imageURL)
.into(profileImage)
}
이상으로 Android에서 서버통신을 하기 위한 거의 필수라고 볼 수 있는 Retrofit에 대하여 알아보았습니다.