728x90
반응형
SMALL

안녕하세요! 프뚜입니다.

 

 

 

Kotlin에서 레트로핏2 설정 및 사용하는 방법에 대해서 포스팅하려고 합니다. 코틀린은 안드로이드말고도 스프링 부트 등 여러 곳에서 사용 가능한 언어이기 때문에 배워두면 좋을 것 같습니다.


[개발 환경]

 - OS: Windows 10 64bit

 - JAVA: 11


# build.gradle 설정하기

// 2022.12.12[프뚜]: Retrofit 라이브러리
implementation("com.squareup.retrofit2:retrofit:2.9.0")

// 2022.12.12[프뚜]: Gson 변환기 라이브러리
implementation("com.squareup.retrofit2:converter-gson:2.9.0")

# RetrofitConf object 생성하기

object RetrofitConfig {

    // 2022.12.15[프뚜]: baseUrl > path
    val retrofit = Retrofit.Builder()
        .baseUrl("https://jsonplaceholder.typicode.com/")
        .addConverterFactory(GsonConverterFactory.create())
        .build()

}

테스트 URL은 https://jsonplaceholder.typicode.com/posts/1입니다.


# UserResponse 생성하기

data class UserResponse(

    var userId: Int,
    var id: Int,
    var title: String,
    var body: String

)

response에 대한 data class 생성을 합니다.


# RetrofitAPI 인터페이스 생성하기

interface RetrofitAPI {

    /* 2022.12.15[프뚜]
        - @GET 또는 @POST로 HttpMethod를 지정
        - @GET("URI") path 뒤 URI를 선언, {path}는 param에서 설명
        - @Path("path") String path로 받아온 path를 URI에 매핑
     */
    @GET("posts/{post}")
    fun getPosts(@Path("post") post: String): Call<UserResponse>

}

# 실행 해보기

// 2022.12.15[프뚜]: URI로 사용 할 인터페이스를 연결
val api = RetrofitConfig.retrofit.create(RetrofitAPI::class.java)

// 2022.12.15[프뚜]: URI 사용 (param에 필요한 데이터 바인딩)
val call = api.getPosts("1")

// 2022.12.15[프뚜]: API Start
call.enqueue(object : Callback<UserResponse> {

    override fun onResponse(call: Call<UserResponse>, response: Response<UserResponse>) {
        print(response.body()) // UserResponse(userId=1, id=1, title=sunt aut facere ...)
    }

    override fun onFailure(call: Call<UserResponse>, t: Throwable) {
        t.printStackTrace()
    }

})

정상적으로 API 통신이 확인됩니다.


해당 소스는 GitHub에서 받을 수 있습니다. (commit message와 게시글 제목은 동일합니다.)

https://github.com/JeongSeongSoo/tistory_kopring.git

 

GitHub - JeongSeongSoo/tistory_kopring: 티스토리 스프링 + 코틀린

티스토리 스프링 + 코틀린. Contribute to JeongSeongSoo/tistory_kopring development by creating an account on GitHub.

github.com

728x90
반응형
LIST
프뚜