[kotlin] 코틀린에서 레트로핏 라이브러리 활용하기

Retrofit은 안드로이드 애플리케이션에서 네트워크 통신을 위해 사용되는 라이브러리입니다. Kotlin에서 Retrofit을 사용하면 간편하게 REST API 호출을 처리할 수 있습니다. 이번 포스트에서는 Kotlin에서 Retrofit 라이브러리를 사용하는 방법을 알아보겠습니다.

Retrofit 라이브러리 추가하기

먼저, Kotlin 프로젝트에 Retrofit 라이브러리를 추가해야 합니다. 프로젝트의 build.gradle 파일에 다음 의존성을 추가합니다:

dependencies {
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    // 추가적으로 필요한 의존성도 함께 추가할 수 있습니다.
}

위 코드에서는 Retrofit의 최신 버전인 2.9.0을 사용하고 있습니다. 필요에 따라 버전을 변경할 수 있습니다.

Retrofit 인터페이스 정의하기

Retrofit을 사용하기 위해 먼저 API의 엔드포인트와 메서드를 정의하는 인터페이스를 생성해야 합니다. 예를 들어, GitHub API에서 사용자 정보를 가져오는 GET 요청을 하려면 다음과 같은 인터페이스를 정의할 수 있습니다:

interface GitHubService {
    @GET("users/{username}")
    fun getUser(@Path("username") username: String): Call<User>
}

위 코드에서는 @GET 어노테이션을 사용하여 GET 요청을 정의하고, {} 안에 동적으로 바뀌는 경로를 @Path 어노테이션을 사용하여 지정했습니다. 이 때문에 username이라는 경로 변수를 동적으로 설정할 수 있게 됩니다. getUser 메서드의 반환 타입은 Call<User>로 정의되어 있습니다.

Retrofit은 이러한 인터페이스 정의를 기반으로 HTTP 요청을 처리하기 위한 코드를 자동으로 생성할 수 있습니다.

Retrofit 인스턴스 생성하기

Retrofit을 사용하기 위해 Retrofit 인스턴스를 생성해야 합니다. Retrofit.Builder를 사용하여 인스턴스를 생성할 수 있습니다. 인스턴스 생성 시에는 기본적인 설정을 지정해야 합니다. 예를 들어, 다음과 같이 baseUrl을 설정할 수 있습니다:

val retrofit = Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .build()

위 코드에서는 baseUrlhttps://api.github.com/로 설정하고 Retrofit 인스턴스를 생성하고 있습니다.

API 호출하기

Retrofit 인스턴스를 생성한 후에는 정의한 API 메서드를 호출할 수 있습니다. 인터페이스의 메서드를 호출하기 위해서는 Retrofit 인스턴스의 create 메서드를 사용해 해당 인터페이스의 구현체를 생성해야 합니다. 예를 들어, 다음과 같이 GitHubService 인터페이스의 구현체를 생성할 수 있습니다:

val service = retrofit.create(GitHubService::class.java)

위 코드에서는 GitHubService 인터페이스의 구현체를 생성하고 있습니다.

이제 실제로 API를 호출하여 데이터를 받아올 수 있습니다. 예를 들어, 다음과 같이 getUser 메서드를 호출하여 사용자 정보를 가져올 수 있습니다:

service.getUser("octocat").enqueue(object : Callback<User> {
    override fun onResponse(call: Call<User>, response: Response<User>) {
        if (response.isSuccessful) {
            val user = response.body()
            // 사용자 정보를 처리하는 로직을 작성합니다.
        }
    }

    override fun onFailure(call: Call<User>, t: Throwable) {
        // 실패 시 처리하는 로직을 작성합니다.
    }
})

위 코드에서는 enqueue 메서드를 사용하여 비동기적으로 API 호출을 수행하고 있습니다. 응답이 성공적으로 도착하면 onResponse 메서드가 호출되고, 실패할 경우 onFailure 메서드가 호출됩니다. 이들 메서드 안에서 응답 데이터를 처리하는 로직을 작성하면 됩니다.

마치며

이번 포스트에서는 Kotlin에서 Retrofit 라이브러리를 활용하여 API 호출을 처리하는 방법을 살펴보았습니다. Retrofit을 사용하면 간편하게 네트워크 통신을 처리할 수 있으며, 비동기적인 호출도 간단히 처리할 수 있습니다. Retrofit 자체의 기능 말고도 많은 인터셉터와 컨버터를 활용해 더욱 강력한 네트워킹 기능을 구현할 수 있으니 다양한 기능도 함께 살펴보시기 바랍니다.