front-end/android studio

Retrofit 사용법

study-minjeong 2024. 3. 13. 16:51

안드로이드 스튜디오에서 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) {
                // 연결 실패
            }
})

 

 

 

 

정말 기본적인 내용만 정리해봤습니다.. 프로젝트에 적용하면서 추가적으로 공부한 내용을 추후에 정리해볼게요~~!