반응형
안드로이드에서 REST api를 사용 해야할 때, Retrofit 추천.
아직도 꽤 여러 라이브러리가 있고, 새로 나오고 하지만 편하긴 하다 확실히
장점으로는
많은 연동 라이브러리가 있다는 점. 필요한건 검색하면 거의 다 있다
한 예로
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
implementation 'com.squareup.retrofit2:converter-gson:2.6.2'
implementation 'com.squareup.retrofit2:converter-simplexml:2.6.2'
implementation 'com.squareup.retrofit2:converter-jaxb:2.6.2'
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
gson 라이브러리를 쓰고 싶으면 converter-gson
xml 값을 받아와야 한다면 converter-simplexml, converter-jaxb
header값을 고정적으로 써야 한다거나 token, oauth등을 써야 할 때는 okhttp3 라는 라이브러리가 있다
기본 사용법은 retrofit2 공식 사이트에서 보고 쉽게 사용하면 될 것 같고
쓰고 있거나 검색해서 찾아오는 사람들을 위한 꿀팁 코드나 몇줄 써서 추천해보자면
- base url 을 설정 해야할 땐 builder에서 .baseUrl() 을 사용한다
ex) 네이버.닷컴/xxxx 에서 ("네이버.닷컴") 은 baseUrl로 설정
this.retrofit = Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
- 1회용 token, auth가 필요할 때는 아래 처럼
@GET("v1/api/member/profile/")
fun profile(@Header("Authorization")authToken:String): Call<AuthData.UserData>
- 계속해서 적용해야 하는 auth token 이 있으면
OkHttpClient를 사용해서,인증 처리를 하면 된다.
(Auth 타입에 따라 Intercepter를 변경, 생성해서 쓰면 된다.)
var client = OkHttpClient.Builder()
.addInterceptor(AuthInterceptor(uToken))
.build()
var retrofit = Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build()
crud, Multipart 기타 설정을 적용하는것도 annotation을 이용해서 쉽게 처리 가능하다
@PUT("api/me/update_profile")
fun updateMeProfile(@Body fields:Map<String, String>) : Call<ProfileData>
@Multipart
@POST("api/me/user_videos")
fun createUserVideoTesting(@Part file: MultipartBody.Part): Call<String>
@Multipart
@POST("api/me/user_photos")
fun createUserPhoto(@Part file: MultipartBody.Part): Call<PhotoData>
@FormUrlEncoded
@POST("api/users/{path}/reviews")
fun createReview(@Path("path") pathId: Int, @Field("room") room:Int, @Field("point") point:Int): Call<ReviewData>
더 상세하게 궁금하거나, 추가적인 retrofit 정보 필요하면 댓글 남겨주세요
그럼 이만 뿅
반응형
'개발 > android' 카테고리의 다른 글
리사이클러뷰, 레이아웃매니저, 스냅헬퍼, 아이템 데코레이션RecyclerView LayoutManager checkLayoutParams SnapHelper ItemDecoration (0) | 2020.04.13 |
---|---|
안드로이드 BottomSheetDialog 에 키보드 써야할 때 (0) | 2020.04.02 |
RecyclerView OnScrollListener 의 OnScrollListener newState issue (0) | 2019.11.29 |
안드로이드 버튼 그룹을만들고 싶을 때 MaterialButtonToggleGroup 을 쓰자 (0) | 2019.10.30 |
Android EditText textMultiLine Action 버튼, Enter key 이벤트 받기 (0) | 2019.10.23 |