[Android] Retrofit에 대하여(이론)

Sin_B·2022년 10월 6일
0

Retrofit

목록 보기
1/1

요즘 팀 프로젝트 개발을 하느라 BackEnd 분과 협업을 하게 되어 Retrofit을 사용하게 되었는데, 쓰다 보니 이게 서버와의 통신을 위해 사용한다는 점과 대략적인 것들만 알고 있지 제대로 된 이해는 하지 않고 있다는 걸 깨닫고 공부도 할 겸 정리 포스팅을 올려보려고 합니다.

Retrofit 공식 사이트 : https://square.github.io/retrofit/


💡 Retrofit이란?

Retrofit을 사진에 적혀있는 대로 설명하자면, Android 및 Java 용 type-safe HTTP client인데요. 여기서 말하는 type-safe란 단어 그대로 타입에 안정적인 게 아닌, 언어의 타입 안정성이 프로그램의 well-defined(=어떤 개념이나 표기가 잘 정의된 상태)를 보장하는 것을 의미합니다.
java는 문제가 발생하는 코드의 경우 예외를 처리해 주기 때문에 type-safe 합니다.

고로 Retrofit은 안드로이드에서 서버와 클라이언트 간의 HTTP 통신(networking) 기능(코드)을 사용하기 쉽게 만들어둔 라이브러리라고 할 수 있습니다.

좀 더 쉽게 설명하자면, 서버의 JSON과 같은 기타 구조화된 데이터를 검색하고 업로드하는 것을 쉽게 할 수 있도록 도와주는 라이브러리입니다.

type-safe를 아직 이해하지 못했다면 : https://velog.io/@noelsky/TYPE-SAFE

🙄❔ 왜 Retrofit을 사용할까?

대부분의 안드로이드 개발자가 사용하는 Retrofit이 생기기 이전에도 사용하던 라이브러리들이 있었습니다. 바로 HttpClient, HttpUrlConnection, Volley, OKhttp 라이브러리인데요.

HttpClient는 몇 가지 버그가 있어 Google에서 HttpUrlConnection의 사용이 권장되고 나서 이쪽이 주로 사용되고 있었다고 합니다. 하지만 사용법이 복잡했던 HttpUrlConnection를 대신해 나온 Google의 Volley가 표준 라이브러리로 사용되었고, Square 팀에서 만든 Okhttp도 많이 사용되었습니다.

그런데 Android 5.1에서 HttpClient가 Deprecated(=신기능이 나와 조만간 사라진다는 뜻) 되고, HttpClient에 의존하던 Volley도 Deprecated 되었다고 합니다.

이제는 Square 팀에서 만든 Okhttp와 Okhttp를 이용해 개발자가 사용하기 쉽게 만든 Retrofit 라이브러리만이 선택지로 남아있어 사용되고 있는 상태입니다. (사실 Deprecated 상태이지만 하지 사용하는 사람들은 꽤 있더라구요)

Okhttp를 기반으로 만들어 Retrofit 라이브러리를 추가하면 Okhttp의 메서드도 사용 가능합니다.

더 자세한 비교가 하고 싶다면 : https://pluu.github.io/blog/android/2016/12/25/android-network/

📃 Retrofit 구현 순서

1. Gradle에 Retrofit 라이브러리 추가
2. Manifest에 권한 추가
3. JSON 형태의 데이터를 담아줄 모델 클래스(data class) 구현
4. 사용할 API를 type-safe 하게 변환해 줄 RetrofitService interface 작성
5. 요청을 보내고 데이터를 parsing할(받아올) Retrofit 객체(Object) 구현 (feat. interface 객체 구현)
6. Http 요청과 응답(request와 response)을 받을 Retrofit class 구현
7. 구현이 잘 된 건지 확인하기


🌠 포스팅을 마치며

아마 다음 포스팅은 Retrofit 구현 포스팅이 아닐까 합니다.
구현은 이미 몇 번 해봤는데, 이론은 아직 잘 모르는 것 같아서 정리 한번 해본 포스팅이었습니다. 사실 Retrofit을 처음 접했을 때는 왜 사용하는지 대충 설명만 듣고 맨땅에 헤딩하듯이 개발했었던 기억이 있어서 한번 정리할 필요성을 느꼈습니다.

그때 들었던 의문은 두 가지였습니다. Retrofit 이란 대체 뭘까? 왜 하필 Retrofit을 사용하는 걸까? 다른 라이브러리는 없나? 하고 생각했었습니다. (이렇게 보니 3가지네요)

그래서 제가 느꼈던 것을 바탕으로 한번 정리해 본 포스팅이었습니다. 읽어주셔서 감사합니다.

참고 블로그_1 : https://todaycode.tistory.com/38
참고 블로그_2 : https://salix97.tistory.com/204
참고 블로그_3 : https://galid1.tistory.com/617

profile
| App Developer | 제가 한 개발을 읽는 사람이 이해하기 쉽게 쓰려고 노력합니다.

0개의 댓글