Retrofit2 ?
-Rest API 통신 라이브러리
-Rest API 통신을 위해 구현된 스퀘어사의 OkHttp 라이브러리의 상위 구현체
-android와 서버 환경에서 HTTP API를 쉽고 안전하게 사용할 수 있도록 도와준다.
Retrofit을 사용하기 위해 사전준비를 해보자!
1. 준비
네트워크를 사용할 것이니 다음과 같이 AndroidManifest.xml파일에 추가하자.
<!-- 인터넷 사용 권한 설정-->
<uses-permission android:name="android.permission.INTERNET" />
또한, build.gradle에 의존성도 추가해주자!!
// Retrofit2
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:retrofit-mock:2.9.0'
implementation 'com.google.code.gson:gson:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
여기서 gson은 JSON을 코틀린 클래스로 바꿔주는 역할을 한다!
따로 변환 객체를 구현하지 않아도 된다는 장점이 있다
2. Retrofit 생성
object ServiceCreator {
private const val BASE_URL = "http://*******:8080"
private val interceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
private val client = OkHttpClient.Builder()
.addInterceptor(interceptor)
.build()
private val retrofit: Retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
3. Retrofit Service 생성
interface UserIdCheckService {
@POST("/api/v1/users/duplicate-check")
fun IdCheck(
@Body body: RequestIdCheckData
): Call<ResponseIdCheckData>
}
아이디 중복체크 api를 예시로 들어보자.
서버에게 요청하는 메소드의 종류(GET, POST, PUT, DELETE)를 파악한 후
뒤에는 url 주소를 적어준다.
이렇게 서비스 인터페이스를 생성해주었다면, 아까 처음에 생성한 Retrofit에서 언급을해주자.
val userIdCheckService : UserIdCheckService = retrofit.create(UserIdCheckService::class.java)
이렇게 언급을 해주었다면 이제
requeust body에 들어갈 데이터 클래스와, reponse(서버에서 받는 데이터) 클래스를 생성해준다.
data class RequestIdCheckData(
@SerializedName("loginId")
val userId : String
)
data class ResponseIdCheckData(
val code: Int,
@SerializedName("message")
val message : String
)
id중복체크를 위해 id를 서버에 요청할 것이고, 반환 가능한지 상태코드와 해당메세지를 반환 받을 것이다.
4. 해당 클래스에서 api 연결
binding.createAccountCheckRepetitionButton.setOnClickListener {
val inputId = binding.createAccountIdEdittext.text.toString()
val requestIdCheckData = RequestIdCheckData(
userId = inputId
)
val call: Call<ResponseIdCheckData> = ServiceCreator.userIdCheckService.IdCheck(requestIdCheckData)
call.enqueue(object: Callback<ResponseIdCheckData>{
override fun onResponse(
call: Call<ResponseIdCheckData>,
response: Response<ResponseIdCheckData>
) {
if(response.code() == 200){
binding.createAccountIdCheckimage.visibility = View.VISIBLE
binding.createAccountIdCheckimage.bringToFront()
binding.createAccountIdWarningTextview.visibility = View.INVISIBLE
isId = true
changeConfirmButtonColor()
}
else{
binding.createAccountIdWarningTextview.visibility = View.VISIBLE
}
}
override fun onFailure(call: Call<ResponseIdCheckData>, t: Throwable) {
Log.e("idcheck_server_test", "fail")
}
})
}
아이디 중복체크 확인을 클릭하였을 때 실행되는 메소드이다.
아이디를 입력하는 값을 변수에 지정해두고, 그 변수를
requestIdCheckData에 있는 userId에 저장한다
그 다음 서버에 요청한 후 응답코드를 받는다.
서버에서 성공한 응답코드는 200으로 설정했으며, 그 때 해당 아이디로 회원가입을 할 수 있다는 것을 알려준다!!
아이디 중복체크 api 연결 성공!!!
'Android > Basic' 카테고리의 다른 글
[Android] RecyclerView (0) | 2022.04.28 |
---|---|
[Android] ViewModel, LiveData (0) | 2022.04.27 |
[Android] UnknownServiceException:CLEARTEXT communication to **** not permitted ....Error (0) | 2022.04.25 |
[Android] Splash 화면 만들기 (0) | 2022.04.24 |
[Android] SVG 사용하기 (0) | 2022.04.23 |