retrofit을 이용해 서버와 통신 !
아래 모듈은 유저의 아이디와 닉네임을 전송하고 중복 유무를 받는 로직을 가지고 있음
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
data class Nickname(
@SerializedName("id")
val id: Int,
@SerializedName("nickname")
val nickname: String
)
// 응답받을 데이터는 Boolean 타입
object ApiClient {
private const val BASE_URL = (주소)
fun getApiClient(): Retrofit {
return Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
}
interface AccessInterface {
@GET("/user/checkNickname")
suspend fun checkNickname(
@Query("id") id: Int
@Query("nickname") nickname: String
): ReturnObject<Boolean>
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
}
fun checkNickname(id: Int, nickname: String){
viewModelScope.launch {
val result = dbAccessModule.checkNickname("a")
}
}