본문 바로가기

Android

Retrofit

더보기

[Android Basic] 시리즈

1. Clean Architecture

2. Retrofit

3. Activity

4. Fragment

5. Coroutine

 

[Android Basic] 시리즈에서는 Android에서 자주 쓰이는 개념을 알아보려고 해요!

 

첫 순서는 Retrofit입니다.

사실 Retrofit은 Android에서 서버와의 HTTP 통신을 너무나 간단하게 만들어주기 때문에

왜 써야하는지는 크게 언급하지 않아도 될 것 같아요.

 


 

이 글에서는

 

⒈ Retrofit을 사용하는 방법

    ⑴ Sync

    ⑵ Async

    ⑶ Coroutine + Flow와 연동하기

OkHttp, Volley 라이브러리와 비교하기

 

와 같은 순서로 이야기하려고 합니다.

참고로 너무 깊은 이야기는 저도 모르기 때문에 간단하게만 적도록 하겠습니다 😅

 


⒈ Retrofit을 사용하는 방법

 

우선 Retrofit서버와의 HTTP 통신을 도와주는 라이브러리입니다.

Network 관련 지식이 거의 없어도 사용할 수 있을 정도에요.

아주 간단히 소개하자면, 단방향 통신인 HTTP를 통해 Request를 보내고 Response를 받습니다.

 

기본적인 사용법은

1️⃣ Retrofit 객체를 만들고,

2️⃣ 통신 방법(Get, Post 등), 매개변수 등이 담긴 Api Interface를 만듭니다.

3️⃣ 해당 Interface를 Retrofit 객체에 전달하여 구현 객체를 반환받습니다.

 

이러한 방식으로 Api Interface의 구현 객체를 얻을 수 있고,

구현 객체의 Api 메서드를 호출하여 서버와 통신할 수 있습니다.

 

코드는 아래의 블로그에 자세한 나와있으니 참고해주세요 🙂

 

레트로핏을 이용하여 서버와 통신하자!

1. 사용법 1-1. Interface 정의 1-2. Retrofit 객체 생성 1-3. HTTP 요청과 응답 2. 예제 소스 이번 게시물에서는 Retrofit을 이용하여 버튼을 누를 때마다 다음 페이지의 공지사항을 불러와서 띄우는 기능을

todaycode.tistory.com

⑴ Sync

서버와 통신한다면 당연히 Request를 보내고, Response를 받기까지 시간이 걸리겠죠?

간단한 작업이라면 Request를 보낸 이후에 Response를 멍하니 기다릴 수도 있고,

아니면 기다리는 동안 멀티태스킹으로 다른 일을 할 수도 있어요.

 

여기서 통신이 끝날 때까지 멈춰있는 방식동기(=Syncronous) 방식,

그렇지 않은 방식을 비동기(=Asynchronous) 방식이라고 해요

 

Retrofit은 두 방식 모두를 지원하는데요,

동기 방식으로 통신할 때는 execute() 메서드를 사용해요.

 

Android에서는 메인 스레드가 UI 이벤트를 담당하는 거 아시죠?

그래서 메인 스레드에서 (따로 스레드를 생성하지 않고) 해당 메서드를 호출하면

0.5초 정도 터치나 스크롤이 안되기도 합니다.

그래서 해당 방식을 이용할 때는 별도로 스레드를 생성해줘야 해요

생각만 해도 귀찮죠? 그래서 보통은 비동기 방식을 이용해요.

⑵ Async

비동기 방식으로 통신할 때는 enqueue() 메서드를 사용해요.

이 경우 내부의 Dispatcher을 이용해서 디폴트 ThreadPool에 작업을 위임합니다.

물론 원하는 경우에는 직접 만든 ThreadPool을 등록할 수도 있어요.

 

이 방식은 편리하지만 단점이 있어요.

서버로부터 Response를 전달받았을 때 콜백 메서드를 호출하는데,

응답을 이용해서 다시 요청을 보내는 등 연쇄적으로 통신해야 할 경우 콜백 지옥에 빠질 수가 있어요

(콜백 지옥: 한 콜백 메서드가 다른 콜백 메서드를 호출하는 등 호출되는 순서를 알아보기가 어려운 코드)

 

이럴때 Coroutine과 Flow를 이용하면 훨씬 가독성을 높일 수 있습니다.

⑶ Coroutine + Flow와 연동하기

Coroutine은 스레드에 비해 훨씬 높은 효율로 비동기 처리를 지원하는 Kotlin 라이브러리인데요, Retrofit과도 연동됩니다.

 

Retrofit을 사용하기 위해서 알아야 할 내용은 그리 많지 않으니, 관심이 있으시다면 사용해 보는 것도 추천해요.

 

코드는 아래의 블로그를 참고해주세요 🙂

 

 

[Kotlin] Retrofit에 Flow와 CallbackFlow 적용하기

본 예제는 Okhttp와 Retrofit에 대한 튜토리얼 내용은 설명하지 않습니다.

medium.com

 


⒉ Volley, OkHttp 등의 라이브러리와 비교하기

⑴ OkHttp

OkHttp는 Retrofit을 개발한 같은 Square 사에서 개발한 라이브러리로, Retrofit도 OkHttp를 기반으로 통신합니다.

OkHttp에서 구현해야 하는 내용이 Retrofit에서는 이미 구현되어 있는 경우가 많아

OkHttp에 비해 Retrofit을 많이 사용하는 듯 합니다.

 

⑵ Volley

Volley도 Retrofit만큼 간편하게 사용할 수 있는 라이브러리입니다.

둘 중 Retrofit의 선호도가 높긴 하지만, 유의미한 차이는 없는 듯 합니다.

 

Volley는 Retrofit과 비교했을 때 RESTful하지 않은 Api에도 사용할 수 있고, 캐시 기능을 지원한다는 장점이 있습니다.

하지만 속도 면에서 Retrofit보다 느리다는 단점이 있습니다.

 

자세한 내용은 아래의 블로그에서 확인할 수 있습니다.

 

 

Retrofit vs Volley

Now a days , Almost every mobile app includes some sort of network hits to perform its functionality and there are many alternatives…

medium.com

 

 

여기까지 Retrofit의 기본적인 사용 방법을 알아봤고, 다른 라이브러리(OkHttp, Volley)와 비교해봤습니다.

혹시라도 틀린 내용이 있다면 댓글에 남겨주시면 감사하겠습니다.

읽어주셔셔 감사합니다! ☺️

 


참고

 

Retrofit이란? (사용하기 전에 알아야 할 것들)

레트로핏을 이용하여 서버와 통신하자!

[Kotlin] Retrofit에 Flow와 CallbackFlow 적용하기

Retrofit vs Volley

'Android' 카테고리의 다른 글

Coroutine ②  (0) 2023.12.24
Fragment  (0) 2023.12.09
Activity  (1) 2023.12.09
Clean Architecture  (0) 2023.08.12