-
RxKotlin + Retrofit2 + GitHub API안드로이드 2019. 4. 12. 18:47
RxKotlin + Retrofit2 + GitHub Api를
활용한 깃허브 정보 가져오기
Rx 공부를 하던 중 [코드뭉치님의 블로그] 에서
RxJava와 Retrofit2을 활용하여 Github Api의 유저 정보를 가져오는 글을 봤습니다.
기존의 작업들을 모두 코틀린으로 진행하였기 때문에 기존 코틀린 프로젝트에 적용을 하기위해
학습목적으로 RxKotlin으로 재작성하였습니다.
구현할 기능
검색하고자하는 깃헙 아이디를 입력받을 수 있게한다.
입력된 깃헙 아이디로 Github Api를 통해 받은 데이터를 RecyclerView를 통해 Display한다.
Android 의존성 추가
app 수준의 Gradle
추가해야되는 의존성(깃허브 링크)
'com.squareup.retrofit2:retrofit:2.5.0'
'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
'com.squareup.okhttp3:okhttp:3.14.0'
'com.android.support:recyclerview-v7:28.0.0'
'com.android.support:cardview-v7:28.0.0'
'io.reactivex.rxjava2:rxkotlin:2.3.0'
'com.squareup.retrofit2:converter-gson:2.5.0'
'io.reactivex.rxjava2:rxandroid:2.1.1'
Code Review
GithubClient
addCallAdapterFactory(RxJava2CallAdapterFactory.create())
위 부분의 RxJava2CallAdapterFactory를 이용하는 이유는 기존에는 Retrofit의 Call 이라는 Response Type을 이용했지만 지금은 Rx와 함께 이용할 것이기 때문에 Reactive Instance를 Single 또는 Observable로 변환하여서 활용하기 위함이다.
addConverterFactory(GsonConverterFactory.create())
Json 형태로 전달받는 Response를 이전에 명명해놓은 인자들에 매칭시키기 위한 Converter
GithubApi
@GET("users/{owner}/repos")
fun getRepos(@Path("owner") owner: String) : Single<ArrayList<GithubRepo>>@GET Annotation : GET방식으로 데이터 전달 이외에 @POST, @PUT, @PATCH, @DELETE 등이 있다.
user/{owner]/repos : BaseUrl의 뒷부분에 붙을 경로명 {owner}의 경우, 아랫줄의 owner인자가 대입된다.
@Path("owner") : @Path Annotaion은 위에서 {owner}라고 명명된 곳의 인자를 매개변수 owner로 활용
@Single<ArrayList<GithubRepo>> : 받은 Response를 Single Type 리턴
GithubRepo
@SerializeName : Annotation value값에 해당하는 데이터를 변수에 바인딩한다.
동작화면
위의 소스 코드는 Github에 올려두었습니다.
세계 최강을 꿈꾸는 안드로이드 Front-End 개발자입니다.
Github 주소: github.com/rkswlrbduf
이전 블로그 주소: blog.naver.com/rkswlrbduf => 블로그 이전중...
'안드로이드' 카테고리의 다른 글
안드로이드 생명주기-Android LifeCycle (0) 2019.04.12 Android Q - RoleManager (0) 2019.04.12 Linked List VS Array List (0) 2019.04.12 ConstraintLayout 살펴보기 (0) 2019.04.12 RecyclerView Filter 사용하기 (1) 2019.04.12 댓글