Android

[Android] Retrofit 3.0.0의 등장

참깨빵위에참깨빵_ 2025. 6. 4. 00:43
728x90
반응형

안드로이드에서 네트워크 통신을 구현할 때 흔히 쓰이는 라이브러리인 레트로핏의 3.0.0이 3주 전 등장했다.

깃허브 리드미에도 3.0.0에 대한 언급이 존재한다.

 

https://github.com/square/retrofit

 

GitHub - square/retrofit: A type-safe HTTP client for Android and the JVM

A type-safe HTTP client for Android and the JVM. Contribute to square/retrofit development by creating an account on GitHub.

github.com

 

3.0.0으로 버전 업그레이드되면서 바뀐 것은 아래의 미디엄에 정리돼 있다.

이 포스팅은 해당 미디엄의 내용을 번역한 것이다. 전체를 번역하진 않았다.

 

https://medium.com/@ravinnpawar/retrofit-3-0-0-is-here-less-boilerplate-more-buzz-b3964329fcdd

 

Retrofit 3.0.0 is Here: Less Boilerplate, More Buzz! ---

“If Retrofit 2.x made you feel smart, Retrofit 3.0.0 will make you feel like a wizard.”

medium.com

 

Call, Response를 쓰지 않아도 된다

 

인터페이스에 레트로핏을 사용하기 위한 추상 함수를 정의할 때 곧잘 Call 또는 Response로 감싸곤 했다.

 

interface ApiService {
    @GET("posts")
    suspend fun getPosts(): Response<List<Post>>
}

 

이제 그럴 필요 없이 리턴 타입인 List<Post>만 사용하면 된다.

 

interface ApiService {
    @GET("posts")
    suspend fun getPosts(): List<Post>
}

 

OkHttp 3.14 -> 4.12 버전 업데이트

 

레트로핏이 OkHttp를 추상화한 네트워크 통신 라이브러리라는 건 이 글을 보는 사람이면 다 알 것이다. 즉 내부적으로 OkHttp를 사용해서 네트워크 통신을 수행하지만 로딩, 캐싱, 동기화 등 부가 기능을 지원한다.

이 OkHttp 버전의 앞자리가 3에서 4로 변경됐다. 레트로핏 제작자 피셜로 버전만 변경됐다고 한다.

 

https://github.com/square/retrofit/discussions/4379

 

그러나 현재 KMP에서 사용은 불가능하고 당장 쓸 수 있게 되지는 않을 거라고 한다. 나중에 추가 공지가 있을 테니 KMP 프로젝트를 만들고 있다면 ktor나 다른 라이브러리를 그대로 사용하는 게 낫다.

 

 

에러 핸들링

 

레트로핏 2.x에선 api 오류 처리 과정이 불편했던 적이 많다. 3부턴 중지되는 함수는 HttpException을 던지도록 변경됐다.

 

try {
    val users = api.getUsers()
} catch (e: HttpException) {
    // 에러 처리
}

 


 

레트로핏 3.x 버전은 2.x 대 구버전들과의 바이너리 호환성을 유지한다. 이 말은 2.x을 쓰는 환경에서 만들어진 라이브러리를 3.x 버전에서도 계속 사용할 수 있단 뜻이다.

그러나 3주 전에 올라온 따끈따끈한 업데이트인 만큼 지금 바로 버전을 올리는 건 좋지 않다. 어떤 사이드 이펙트가 있을 지 모르고, 위 미디엄 포스팅을 제외한 실사용기가 아직 올라오지 않았다.

간단한 프로젝트를 만들어서 써 보는 건 상관없지만 라이브에 포함시키는 건 굳이 할 필요가 있을까 싶다. 그러나 2.x 버전에서보다 적은 코드를 써서 네트워크 통신을 구현할 수 있게 되고 에러 처리가 단순해지는 건 매력적인 변화기 때문에 관심 있다면 지켜볼 필요가 있어 보인다.

반응형