[Android/Kotlin] retrofit Api 통신하기

찌니·2022년 9월 22일
0

Android(Compose)

목록 보기
7/12

retrofit을 이용해 서버와 통신 !

아래 모듈은 유저의 아이디와 닉네임을 전송하고 중복 유무를 받는 로직을 가지고 있음

  1. gradle module에 의존성을 추가

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

  1. 서버에 전송할 데이터 구조(ex. data class)와 응답받을 데이터 구조(ex. data class) 모델 생성
data class Nickname(
    @SerializedName("id")
    val id: Int,
    @SerializedName("nickname")
    val nickname: String
)

// 응답받을 데이터는 Boolean 타입
  1. ApiClient 생성
object ApiClient {
    private const val BASE_URL = (주소)

    fun getApiClient(): Retrofit {
    
        return Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build()
    }
}
  1. instance 생성
interface AccessInterface {
  @GET("/user/checkNickname")
  suspend fun checkNickname(
  		@Query("id") id: Int
  		@Query("nickname") nickname: String
  ): ReturnObject<Boolean>
  1. api 모듈 생성
class DBAccessModule {
    private val acessApi: AccessInterface = ApiClient.getApiClient().create()

    suspend fun checkNickname(nickname: Nickname): Boolean{
        val result = kotlin.runCatching {
            accessApi.checkNickname(nickname)}.getOrNull()?.result?: false
        Log.d("중복체크 결과", result.toString())
        // 서버에서 중복결과를 Boolean으로 보내줌
        return result
    }
  1. api 호출
fun checkNickname(id: Int, nickname: String){
	viewModelScope.launch {
            val result = dbAccessModule.checkNickname("a")
    }
}
profile
찌니's develog

0개의 댓글