스팀 앱 개발기 #22 - API 연동에 필요한 라이브러리 추가
이제 condenser_api.get_accounts API를 연동해야 합니다. 요즘 안드로이드에서 가장 많이 사용되는 네트워크 라이브러리는 Retrofit지요. 저 또한 API 연동에 그것을 사용하려 합니다. 이번 포스트에서는 데이터 모듈에 Retrofit 라이브러리를 추가하고 Retrofit 객체를 정의하는 과정을 정리합니다.
Retrofit 라이브러리 추가
dorian-steem-data 모듈의 build.gradle에 dependencies 블록을 아래와 같이 정의합니다.
dependencies {
// retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
// rx
implementation 'io.reactivex.rxjava2:rxjava:2.2.20'
}
- retrofit: 이게 바로 API 연동에 사용할 라이브러리입니다.
- adapter-rxjava2: API 연동시 RxJava도 같이 사용하기 위해 추가합니다.
- converter-gson: 서버로 보낼, 서버로부터 받을 JSON 데이터를 데이터 클래스로 또는 그 반대로 자동 변환을 지원합니다.
- rxjava: RxJava 라이브러리입니다.
Retrofit 포장 객체 정의
API 연동에 Retrofit 객체가 필요하구요. 이를 감싸는 SteemClient 싱글 객체를 아래와 같이 정의합니다.
object SteemClient {
const val BASE_URL = "https://api.steemit.com"
private val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
// val apiService = retrofit.create(SteemService::class.java)
}
- BASE_URL: API 연동에 사용할 기본 URL
- addConverterFactory(GsonConverterFactory.create())
- 이것을 호출해야 JSON 자료가 데이터 클래스로 또는 그 반대로 자동 변환됨
- addCallAdapterFactory(RxJava2CallAdapterFactory.create())
- 서버로부터 데이터를 받기 위한 Observable 객체를 사용하기 위해 필요 (RxJava 관련)
GitHub Commit
마치며...
서버 연동까지 해보고 싶었지만, 오늘의 남은 시간이 부족하여 더 진행하지는 못 했네요. 다음 포스트에서는 condenser_api.get_accounts API를 실행하는데 필요한 데이터 클래스들을 진행할 예정입니다.
지난 스팀 앱 개발기
- #21 - 사용자 지갑 정보를 담을 SteemitWallet 클래스 정의
- #20 - 클린 아키텍처를 위한 모듈 구성 (2)
- #19 - 클린 아키텍처를 위한 모듈 구성 (1)
- #18 - VEST로부터 STEEM POWER를 계산하는 방법
- #17 - VEST를 STEEM POWER로 변환하기 위해 필요한 get_dynamic_global_properties API
- #16 - 지갑 내용을 읽기 위해 필요한 API
- #15 - 지갑 서브화면(WalletFragment) 레이아웃 구성해 보기
- #14 - 지갑 서브화면(WalletFragment)에서 계정 인식하기
- #13 - 프로파일 서브화면(ProfileFragment)에서 계정 인식하기
- #12 - 태그 서브화면에서 태그 인식하기
- #11 - 검색 레이아웃을 메인 화면에 적용
- #10 - 태그 및 계정 검색 레이아웃 만들기
- #9 - BaseActivity 클래스 정의 그리고 MainActivity 클래스에 적용
- #8 - BaseFragment 클래스 정의 그리고 기존 프래그먼트들에 적용
- #7 - ProfileFragment 그리고 WalletFragment에 데이터 바인딩 적용
- #6 - 태그별 검색 내용을 보여줄 TagsFragment에 데이터 바인딩 적용
- #5 - GitHub에 소스 올리기
- #4 - 하단 내비게이션의 탭 관련 클래스 이름 수정
- #3 - 하단 내비게이션 바의 아이콘, 텍스트 수정
- #2 - 프로젝트 생성
- #1 - 시작하며...
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Upvoted! Thank you for supporting witness @jswit.