[Android] Retrofit2로 http 통신하기

제철맞은생선·2023년 1월 4일

ANDROID

목록 보기
9/12

Retrofit2의 구성요소 3가지

1. DTO: Data Transfer Object, JSON 타입변환에 사용되는 모델
2. Interface: 사용할 HTTP CRUD동작들을 정의해놓은 인터페이스

  • CRUD : Create/Read/Update/Delete
  • HTTP METHOD : Post/Get/Update/Delete
    3. Retrofit.Builder: Interface를 사용할 인스턴스, baseUrl,/Converter 설정
  • baseUrl: 기본 사이트 주소
  • Converter: JSON과 안드로이드 간 데이터 형식 변환을 도와주는 기능

Retrofit2 사용

  1. 인터넷 권한 설정
//under AndroidManifest.xml > manifest
<uses-permission android:name="android.permission.Internet"/>
  1. Retrofit2 라이브러리 등록
//under build.gradle > dependencies
implementation 'com.google.code.gson:gson:2.8.9'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
  1. Data Transfer Object 생성
  • SerializedName()을 사용하여 넘어오는 JSON 형식 데이터를 변환해준다. 즉, JSON의 속성명에 담긴 값을 변수명으로 옮기는 것이다.
  • 속성명과 변수명을 같게 설정하면 SerializedName()을 사용하지 않아도 된다.
data class 클래스(
	@SerializedName("속성명1")
    val 변수명1:Object
    
	@SerializedName("속성명2")
    val 변수명2:Object
    
	@SerializedName("속성명3")
    val 변수명3:Object
)
  1. Interface 정의
//RetrofitService.kt
interface RetrofitService {
	
    @GET("API 주소")
    fun get클래스():Call<클래스>
    
    ...
}
  1. Retrofit2 인스턴스
//under using Activity
val retrofit = Retrofit.Builder().baseUrl("기본사이트 주소")
val service = retrofit.create(RetrofitService::class.java)

service.get클래스()?.enqueue(object:Callback<클래스>{
	//Interface에 기재된 함수들 오버라이딩
})

0개의 댓글