Retrofit2

BongKu·2023년 6월 17일
0

Android

목록 보기
2/30
post-thumbnail

Retrofit2 ?

Retrofit2는 Square사에서 개발한 오픈 소스 라이브러리로, RESTful API와 통신하기 위한 클라이언트를 생성하는 데 사용됩니다.

다음과 같은 단계로 사용할 수 있습니다.

  • 의존성 추가 : Gradle 파일에 Retrofit2 관련 의존성을 추가해야 합니다.
  • Retrofit 객체 생성 : 서버의 기본 URL과 Gson 또는 Moshi 같은 JSON 파서를 설정할 수 있습니다.
  • API 인터페이스 정의 : HTTP 요청 메서드(GET,POST 등) 와 해당 엔드포인트, 요청 및 응답 형식 등을 정의합니다.
  • API 인스턴스 생성 : Retrofit 객체를 사용하여 API 인터페이스의 구현체를 생성합니다. 이를 통해 API를 호출합니다.
  • 네트워크 요청 : 생성된 API 서비스 인스턴스를 사용하여 네트워크 요청을 실행합니다.

예제

dependency 추가

    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

Retrofit 객체 생성

fun providesBithumbRetrofit(): Retrofit =
     Retrofit.Builder()
         .baseUrl(BASE_URL)
         .addConverterFactory(GsonConverterFactory.create())
         .build()

baseUrl을 통해서 API 호출을 위한 URL을 설정합니다.
addConverterFactory 에 JSON형식의 response를 자동으로 변환하기 위해 GsonConverterFactory를 추가합니다.

API 인터페이스 정의

interface GetCoinService {
    @GET("public/ticker/ALL_KRW")
    suspend fun getCoinList() : CoinResponse
}

HTTP 요청 메서드(GET,POST 등) 와 해당 엔드포인트, 요청 및 응답 형식 등을 정의합니다.

API 인스턴스 생성

class CoinRepository {
    private val client = RetrofitInstance.providesBithumbRetrofit().create(GetCoinService::class.java)
    suspend fun getCoinList() = client.getCoinList()
}

Retrofit 객체를 사용하여 API 인터페이스의 구현체를 생성합니다.

네트워크 요청

    fun getCoinList() = viewModelScope.launch {
        val result = coinRepository.getCoinList()
        				.
        				.
    }

생성된 API 서비스 인스턴스를 사용하여 네트워크 요청을 실행합니다.

공식 문서 : https://square.github.io/retrofit/

profile
화이팅

0개의 댓글