티스토리 뷰
팀 프로젝트를 수행하면서 팀장님께서 안드로이드에서 백엔드와 HTTP 통신을 하는 코드를 작성하는 미션을 부여해주셨다!! 백엔드와 통신하지 않는 안드로이드 앱만 만들어온터라 구현에 있어서 어느 정도 한계를 느끼고도 있었기 때문에 기쁜 마음으로 미션을 받아들였다.
프로그램을 개발하다 보면 자연스럽게 백엔드 서버와 통신해야 될 일이 생긴다. 웹 프론트에서는 axios 라이브러리를 활용해서 백엔드 api에서 원하는 서비스를 제공받을 수 있었다. 그렇다면 안드로이드는? 하고 찾아보다가 자연스럽게 만나게 되는 라이브러리가 Retrofit이었다.
1. Retrofit이란?
Retrofit의 github.io에 들어가보면 Type Safe한 HttpClient 라이브러리라고 한다. Type Safe하다는 뜻은 다음과 같다.
타입에 불안정적이다 라고 하는것은 타입을 판별(Type Check) 하지 못해 Runtime 시 타입으로 인한 문제가 발생하는 것입니다.
Type Safe 하다 라는 것은 그 반대로 타입을 판별(Type Check) 할 수 있어 Runtime시가 아닌 컴파일시 문제를 잡을 수 있는 것입니다.
출처: https://dololak.tistory.com/17 [코끼리를 냉장고에 넣는 방법]
그래서 서버에서 받은 데이터를 우리가 알고있는 필요한 타입으로 받아서 사용할 수 있다.
2. 우리는 왜 HttpClient 라이브러리를 사용할까?
우리가 자바를 활용한다면 별도의 라이브러리를 활용할 필요 없이 Java.net에 내장되어 있는 HttpURLConnection을 사용하면 된다. 하지만 대부분의 개발자는 Retrofit이나 Okhttp, Volley등과 같은 라이브러리를 사용한다. 왜??
2-1. Http 개발의 어려움
사실 정답은 HttpClient 라이브러리가 아닌 모든 라이브러리를 활용하는 이유와 일맥상통한다. 기능을 활용하기 위한 아주 기초적이지만 귀찮은 작업들을 라이브러리에게 맡기기 위해서다.
보통 Http를 개발한다면, 아래의 것들을 고려해야 한다고 한다.
- 연결
- 캐싱
- 실패한 요청을 재시도
- Threading
- 응답 분석
- 오류 처리
...오우,,,
제대로 된 서비스를 제공하려면 위의 내용을 고려해야 하지만 저 많은 것들을 개발하다 보면 배보다 배꼽이 커지게 될 것이다.
고로, 우리는 적절한 라이브러리 활용을 해야한다!!
그 중에서도 이번에 우리는 Retrofit을 사용할 것이다!! 왜냐?

빠르거든..
3. Retrofit 이용 준비 및 구조
Retrofit을 이용해 서버를 연동하려면 실제 서버를 연동을 실행하는 Call 객체가 필요하다. 하지만 이 Call 객체는 개발자가 직접 만드는 것이 아니고 개발자는 인터페이스를 통해 설계도만 만들고 Retrofit이 자동으로 만들어 준다.

개발자가 네트워크를 연결하기 위해서는 인터페이스에 네트워킹 시 호출해야 할 함수들을 등록한다. 그렇게 추상 함수로 작성된 인터페이스를 Retrofit에 전달하면 Retrofit에서 인터페이스의 함수를 구현해 실제 네트워킹을 진행해 주는 Service 객체를 반환해준다. 이 Service 객체가 바로 Call 객체를 반환해주는 객체이다. 이렇게 Service 객체를 획득하고 실제 네트워킹이 필요한 순간에 Service의 함수를 호출하여 Call 객체를 받고 Call 객체에게 일을 시키면 된다.
한 줄로 다시 얘기하자면 인터페이스를 이용하여 Service 객체를 획득한 후 네트워킹이 필요할 때 Call 객체를 획득하여 이용하면 되는 구조이다.
참고 자료
Retrofit
A type-safe HTTP client for Android and Java
square.github.io
Java - Retrofit이란? (retrofit 사용법 자세한 설명)
1. Retrofit이란 BackEnd 또는 FrontEnd 를 개발하다보면 거의 필수적으로, 다른 서버에 데이터를 요청할 일이 생기게 됩니다. 특히나 FrontEnd 의 경우에는 서버로부터 데이터를 받아와 출력하는 경우가
galid1.tistory.com
책 - 깡샘의 안드로이드 프로그래밍
'Programming > 안드로이드(Android)' 카테고리의 다른 글
[안드로이드] Failed to install the following Android SDK packages as some licences have not been accepted. Error 해결 (0) | 2021.03.25 |
---|---|
[안드로이드] Retrofit 기본 사용법 (0) | 2021.03.23 |
[Android] Constraint Layout (Virtual Helpers objects) (0) | 2021.03.05 |
[Android] ConstraintLayout이란? (0) | 2021.03.02 |
안드로이드 리소스(xml) 명명 규칙 (0) | 2021.02.26 |