안드로이드 스튜디오에서 Rest api 통신을 하는 방법을 알아보겠습니다!
Retrofit이란 REST API 통신 라이브러리로, 통신 라이브러리 중 가장 많이 사용되는 대표적인 라이브러리이다.
OkHttp 라이브러리의 상위 구현체이고, OkHttp를 네트워크 계층으로 활용하고 그 위에 구축된다. AsyncTask 없이 백그라운드 스레드를 실행하고, 콜백을 통해 메인 스레드에서 ui를 업데이트 한다.
구성 요소
1. DTO, POJO
2. Interface : 사용할 http crud 동작들을 정의해놓은 인터페이스
3. Retrofit.Builder 클래스 :인터페이스를 사용할 인스턴스, baseUrl, 변환기 설정
사용 방법
1. 초기 설정
1-1. gradle 설정
// Retrofit 라이브러리
implementation 'com.squareup.retrofit2:retrofit:2.6.4'
1-2. 인터넷 권한 설정 (manifest 파일에 등록)
<uses-permission android:name="android.permission.INTERNET"/>
2. DTO/POJO 모델 클래스 생성
REST API로 받아올 데이터를 변환하여 매핑할 DTO 클래스를 선언한다.
데이터 구조에 맞게 모델 클래스를 선언한다.
JSON은 @SerializedName("속성명")으로, XML -> @Element(name="속성명")으로 속성명을 일치시켜준다.
3. Interface 정의
사용할 메소드를 선언해준다.
public interface RetrofitService {
@GET("/uri")
Call<ResultResponse> getResult(String result);
}
4. Retrofit 인스턴스 생성
재사용할 수 있도록 Retrofit 객체를 만든다.
companion object {
private const val BASE_URL = "http://10.0.2.2:8080/"
private val gson: Gson = GsonBuilder().setLenient().create()
private val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
fun manageRetrofit(): RetrofitService {
return retrofit.create(RetrofitService::class.java)
}
}
-> 해당 서비스를 사용할 때 쓰려고 함수로 따로 생성하였다.
5. api 호출
apiObject.manageMember().getResult(data).enqueue(object : Callback<ApiResponse> {
override fun onResponse(
call: Call<ApiResponse>,
response: Response<ApiResponse>
) {
// 연결 성공
}
override fun onFailure(call: Call<ApiResponse>, t: Throwable) {
// 연결 실패
}
})
정말 기본적인 내용만 정리해봤습니다.. 프로젝트에 적용하면서 추가적으로 공부한 내용을 추후에 정리해볼게요~~!