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와 게시글 제목은 동일합니다.)
728x90
반응형
LIST
'프로그램 > KOTLIN' 카테고리의 다른 글
[Kotlin] 코틀린에서 날짜 계산하기 (Date, Calendar) (2) | 2023.01.01 |
---|---|
[Kotlin] 코틀린의 연산자 오버로딩 (Operator Overloading) (2) | 2022.12.15 |
[Kotlin] 코틀린의 Scope Function (let, run, with, also, apply) (2) | 2022.12.14 |
[Kotlin] 코틀린의 NPE (Null Point Exception) 처리 방법 (2) | 2022.12.11 |
[Kotlin] 코틀린의 함수 (fun) (1) | 2022.12.10 |