
build.gradle 내부
implementation 'com.squareup.retrofit2:retrofit:(insert latest version)'
implementation 'com.squareup.retrofit2:converter-gson:(insert latest version)'
implementation 'com.google.code.gson:gson:(insert latest version)'
retrofit, gson의 기능을 사용하기 위해 종속
(insert latest version)을 지우고 retrofit, gson 버전을 입력한다.
Manifest 권한부여 (인터넷)
<uses-permission android:name="android.permission.INTERNET"/>
자바 interface GET방식
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
코틀린 interface GET방식
interface GitHubService {
@GET("/api/search.api?output=json") //API신청한 곳 요청 URL
fun getapi(
@Query("key") Key : String //서버에 가져올 값
) : Call<data>
interface GitHubService는 구현체가 아님으로 빌더패턴 사용
val retrofit = Retrofit.Builder()
.baseUrl("https://") //api의 첫 도메인 주소
.addConverterFactory(GsonConverterFactory.create())
.build()
val gitHubService = retrofit.create(GitHubService::class.java)
gitHubService.getapi("//실제 api 키값")
.enqueue(object: Callback<DataDTO> {
// Retrofit 객체에 enqueue()를 사용하여 서버와 통신했을 때 콜백을 작성하여 사용한다.
}
리턴형 Call< > 반환형을 넣기 위해 data class 생성 (JSON = data class)
data class data (
@SerializedName("itemId") val id : Long, //@SerializedName을 사용하면 api json 정보를 연결 가능
@SerializedName("title") val title : String,
)
API에 itemId와 val id에 이름이 달라도 연결 시켜줌
DB에 접하는 객체 DTO
(Data Transfer Object)
data class DataDTO (
@SerializedName("title") val title : String,
@SerializedName("item") val items : List<data>
//List<data> -> itemId, title을 지닌 data class data를 불러온다
//api에서 가져올 item은 특수문자, 숫자, 한영이 나올 수 있음으로 List type으로 지정한다
)
요약
1. implementation
- gson, gsonconverter, retrofit 사용하기 위해 종속
2. uses permisson
- http 통신을 위해 권한부여
3. Retrofit을 사용하기 위해 객체생성 (Builder 패턴)
( MainActivity.kt )
4. 서비스 생성 interface Service (@GET 방식 api url 요청, @Query 불러올 키, 필수 요청 api)
( interface GitHubService )
5. interface Serivce 비동기 리턴형 Call에 대입할 DTO(data class) 생성
( DataDTO.kt )
6. Call<T> 객체 사용
( MainActivity.kt )
'Android-Kotlin📱' 카테고리의 다른 글
Kotlin BMI With ViewBinding (코틀린 뷰바인딩 BMI) (0) | 2022.05.17 |
---|---|
코틀린 뷰바인딩 Kotlin ViewBinding (0) | 2022.05.15 |
Kotlin 갤러리 권한 요청 및 설명 팝업 (0) | 2022.04.25 |
Kotlin Collection (코틀린 Collection) (0) | 2022.03.30 |
Android Studio 내 스마트폰 연결, USB 디버깅 (0) | 2022.03.29 |