일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- ar vr 차이
- 안드로이드 유닛 테스트
- 객체
- 안드로이드 유닛테스트란
- Rxjava Observable
- 멤버변수
- 스택 큐 차이
- rxjava disposable
- 2022 플러터 안드로이드 스튜디오
- 안드로이드 라이선스
- jvm 작동 원리
- rxjava cold observable
- 플러터 설치 2022
- 안드로이드 라이선스 종류
- 큐 자바 코드
- 스택 자바 코드
- 자바 다형성
- jvm이란
- 서비스 쓰레드 차이
- 서비스 vs 쓰레드
- 안드로이드 레트로핏 사용법
- 2022 플러터 설치
- rxjava hot observable
- 안드로이드 os 구조
- 클래스
- android ar 개발
- android retrofit login
- 안드로이드 레트로핏 crud
- 안드로이드 유닛 테스트 예시
- ANR이란
- Today
- Total
나만을 위한 블로그
[Android] Retrofit 3.0.0의 등장 본문
안드로이드에서 네트워크 통신을 구현할 때 흔히 쓰이는 라이브러리인 레트로핏의 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로 변경됐다. 레트로핏 제작자 피셜로 버전만 변경됐다고 한다.
그러나 현재 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 버전에서보다 적은 코드를 써서 네트워크 통신을 구현할 수 있게 되고 에러 처리가 단순해지는 건 매력적인 변화기 때문에 관심 있다면 지켜볼 필요가 있어 보인다.
'Android' 카테고리의 다른 글
[Android] 안드로이드 16(바클라바) 변경점 (0) | 2025.07.07 |
---|---|
[Android] XML 프로젝트에서 커스텀 달력 라이브러리 구현하는 법 (0) | 2025.06.22 |
[Android] XML에서 FlowLayout 비슷한 UI 구현하는 법 (0) | 2025.05.13 |
[Android] View의 생명주기 (0) | 2025.05.12 |
[Android] 웹뷰 브릿지 연동 방법 (0) | 2025.05.09 |