[Android] REST API 사용하기 / Retrofit2(Feat. Repository Pattern, DTO)

김민주·2022년 10월 29일
0

Android

목록 보기
11/21

오늘은 Retrofit2를 이용한 REST API 사용법에 대해 정리해보려고 한다 🤗


Daum 책 검색 REST API
https://developers.kakao.com/docs/latest/ko/daum-search/dev-guide#search-book


1. App key 생성

먼저 API 를 사용하기 전에,
https://developers.kakao.com 에서 자신의 어플리케이션을 만든 후
키 값을 보유하고 있어야 한다.


2. API Test

Test Tool: Postman

Authorization 탭에

Key: Authorization
Value: KakaoAK REST API 키

입력한 후

api 형식에 맞는
key-value 값을 입력하고 Send해주면 Response가 날라온다.

테스트에 성공하면 실제 어플에 적용하면 된다.


3. build.gradle dependencies 추가

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


4. DTO 생성

  • DTO
    : Data Transfer Object. 계층 간 데이터 교환을 하기 위해 사용하는 객체.

json to kotlin이라는 플러그인 설치 후
response 예시를 이용하여 생성하면 json형식에 맞게 만들어준다


5. API interface 생성

test한 앱 키를 가지고 있는 인터페이스를 생성해준다.
만든 Response 클래스를 이용하여 일시중단가능한 함수를 만든다.


6. Retrofit 생성

 private val retrofit: Retrofit by lazy {
        Retrofit.Builder()
            .addConverterFactory(MoshiConverterFactory.create()) //DTO 변환 모시
            .baseUrl(BASE_URL)
            .build()
    }

레트로핏 인스턴스를 만들 땐

object를 사용하여 retrofit 객체는 싱글톤패턴으로 생성하여야
늦은초기화를 통해 필요할때 사용되도록 자원낭비를 막을 수 있다!!


val api: BookSearchApi by lazy {
        retrofit.create(BookSearchApi::class.java)
    }

인터페이스를 상속받아 create 해준다


7. API 실행


 override suspend fun searchBooks(
        query: String,
        sort: String,
        page: Int,
        size: Int
    ): Response<BookSearchResponse> {
        return RetrofitInstance.api.searchBooks(query, sort, page, size) //api실행하여 반환값 4개 받기
    }

Repository 인터페이스를 구현할 클래스에서 api를 실행한다.

프래그먼트나 액티비티에서 api 실행한 RepositoryImpl 파일을 이용하면 된다.

profile
𝐃𝐨𝐧'𝐭 𝐛𝐞 𝐚 𝐩𝐫𝐨𝐜𝐫𝐚𝐬𝐭𝐢𝐧𝐚𝐭𝐨𝐫💫

0개의 댓글