비동기 2

Retrofit Call, 제대로 사용하기 - (2)

응답 에러를 wrapping 하기 앞서 소개한 Retrofit suspend 함수는 HTTP status code 혹은 각종 조건에 따라서 에러를 throw 하고 있다. 따라서 해당 함수를 사용하기 위해서는 try-catch 문 등으로 에러를 잡아줘야한다. 혹시 실수로 try-catch 를 사용하지 않을 경우, 앱이 비정상 종료될 수 있다. 조금 더 안전하게 에러를 wrapping 해서 반환받을 수는 없을까 ? 확장함수 사용 앞서 Retrofit suspend 함수는 내부적으로 Call.await() 를 호출해서 enqueue()를 실행하고 있음을 알게 되었다. 이 await() 함수를 사용해서 다음과 같이 확장함수를 만들 수 있다. interface GitHubService { @GET("users/{..

Android 2022.04.04

Retrofit Call, 제대로 사용하기 - (1)

Retrofit은 안드로이드에서 네트워크 통신 작업을 위해 가장 많이 사용하는 라이브러리이다. 하지만 많은 사람들이 Retrofit이 내부적으로 어떻게 동작하는지 모른채 사용하고 있다. 물론 내부 동작을 모두 알 필요는 없지만, 어느정도는 알아야 반환되는 값이 어떤 과정을 거쳐 검증되었는지, 발생할 수 있는 에러는 어떤 게 있는지, 어떤 상황에 발생하는지 등을 알고 대응할 수 있다. 그리고 Retrofit 을 사용하면서 자주 보는 클래스는 Call 이다. RxJava 나 Coroutine 을 사용하면서 Call 을 직접 사용하지 않는 경우도 많다. 하지만 Call 은 항상 내부적으로 중요하게 사용되고 있는 클래스이다. 이를 중심으로 Retofit 의 동작 방식에 대해 알아보고, Call 을 활용할 수 있..

Android 2022.04.01