영드로이드개발자
용이의 개발블로그
영드로이드개발자

블로그 메뉴

  • ⭐️ Home
  • 💻 GitHub
  • ❤️ Instagram
  • 👍 LinkedIn
  • 분류 전체보기 (44)
    • 공지사항 (1)
    • Daily 공부방 (0)
    • 프로그래밍 언어 (8)
      • Java (7)
      • Kotlin (1)
    • 안드로이드(Kotlin) (16)
    • 코딩테스트(Java) (11)
      • 기초 자료구조 (3)
      • 백준 (0)
      • 프로그래머스 1단계 (5)
      • 프로그래머스 2단계 (3)
    • 알고리즘 정리 (5)
    • 주간 목표계획 및 회고 (2)
    • Project (1)
      • Android App - 오마이코인 (1)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
영드로이드개발자
안드로이드(Kotlin)

Kotlin 코틀린의 Retrofit

Kotlin 코틀린의 Retrofit
안드로이드(Kotlin)

Kotlin 코틀린의 Retrofit

2022. 8. 26. 12:18
반응형

더보기

본 포스팅은 FastCampus - 30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 를 바탕으로 학습된 내용을 요약 및 정리한 글입니다.

Retrofit

1. Retrofit 이란?

Retrofit 이란 간단하게 말하면 서버와 클라이언트 간 HTTP 통신을 할 수 있도록 도와주는 녀석이다.

 

우리들이 흔히 어플을 만들때 오픈API을 이용하여 데이터 정보를 가져오게 되는데 그때 Retrofit을 이용하면 편하게 코드를 작성할 수 있다.

 

물론 Retrofit을 사용하지 않더라도 HttpClient, Volley, OKhttp 등 통신을 편하게 할 수 있도록 도와주는 라이브러리 들이 존재 했었지만 요즘은 전부 Retrofit을 이용하는 추세이므로, HTTP 통신을 할때는 이제는 Retrofit을 이용하도록 하자.

 

 

2. Retrofit 을 사용하면?

 

빠른 성능 - OkHttp 의 3배이상의 차이가 존재

 

가독성 - Annotation 사용으로 코드의 가독성이 뛰어남

 

간단한 구현 - 반복된 작업을 라이브러리로 넘겨서 작업

 

동기/비동기 쉬운 구현 - 비동기는 응답이 도착하면 Callback으로 받고 메인스레드에서 작업을 처리

 

3. Retrofit의 구성요소

 

DTO - "Data Transfer Object" 형태의  Model이며 JSON 타입 변환에 사용됨Interface - 사용할 HTTOP CRUD 동작들을 정의해놓은 인터페이스 이다.Retrofit.Builder 클래스 - Interface를 사용할 인스턴스, baseUrl(URL) / Converter(변환기)를 설정

 

위 구성요소들의 예제는 밑에서 확인하자!

 

 

4. Retrofit 사용하기

작성한 파일 목록

1. AnroidManifest.xml

2. BookService.kt

3. Book.kt

4. SearchBooksDto.kt

5. MainActivity.kt

6. build.gradle

 

 

AnroidManifest.xml

    <uses-permission android:name="android.permission.INTERNET"/>

항상 HTTP 통신을 할때는 네트워크 접근 허락을 해주어야 한다.

 

 

build.gradle

dependencies {

    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
    
}

 

 

BookService.kt

interface BookService {
    @GET("/v1/search/book_json")
    fun getBookByName(
        @Header("X-Naver-Client-Id") id: String,
        @Header("X-Naver-Client-Secret") secretKey: String,
        @Query("query") keyword: String
    ): Call<SearchBooksDto>
}

 

Book.kt

data class Book(
    @SerializedName("isbn") val id: String,
    @SerializedName("title") val title: String,
    @SerializedName("description") val description: String
)

 

SearchBooksDto.kt

data class SearchBooksDto (
    @SerializedName("items") val books: List<Book>
    )

 

MainActivity.kt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //retrofit 구현체가 생성이 되서 retrofit이라는 변수에 할당이 된다.
        val retrofit = Retrofit.Builder()
            .baseUrl("https://openapi.naver.com")
            .addConverterFactory(GsonConverterFactory.create())
            .build()


        val bookService = retrofit.create(BookService::class.java)

        bookService.getBookByName("GBs1ecx1hmePfrG29pdo","9JQH1LYFYQ","안드로이드")
            .enqueue(object : Callback<SearchBooksDto>{
                override fun onResponse(
                    call: Call<SearchBooksDto>,
                    response: Response<SearchBooksDto>
                ) {
                    if(response.isSuccessful.not()){
                        return
                    }

                    response.body()?.books?.forEach{
                        Log.d(TAG, it.toString())
                    }
                }

                override fun onFailure(call: Call<SearchBooksDto>, t: Throwable) {
                    TODO("Not yet implemented")
                }

            })
    }
    companion object{
        private const val TAG = "MainActivity"
    }
}

해당된 예제는 네이버 오픈API 책검색 API를 가져와서 작성하였고 HTTP 통신이 되는지만 확인한 예제이기 때문에 로그를 찍어서 데이터가 잘 넘어오는지 확인하였습니다.

 

 

이처럼 데이터가 잘 넘어 오는것을 확인하였습니다.

 

이처럼  Retrofit을 사용하기 위해서는 postman을 이용하면 편리한대, 차후 postman을 사용하는 방법에 대해서도 포스팅하겠습니다.

반응형
저작자표시 비영리 변경금지

'안드로이드(Kotlin)' 카테고리의 다른 글

Kotlin 코틀린의 싱글톤(Singleton)  (0) 2022.08.30
Kotlin 코틀린의 object와 class 키워드  (0) 2022.08.30
Kotlin 코틀린의 RecyclerView  (0) 2022.08.25
Kotlin 코틀린의 SharedPreferences  (0) 2022.08.08
Kotlin 코틀린의 Context  (0) 2022.08.08
  • Retrofit
  • 1. Retrofit 이란?
  • 2. Retrofit 을 사용하면?
  • 3. Retrofit의 구성요소
  • 4. Retrofit 사용하기
'안드로이드(Kotlin)' 카테고리의 다른 글
  • Kotlin 코틀린의 싱글톤(Singleton)
  • Kotlin 코틀린의 object와 class 키워드
  • Kotlin 코틀린의 RecyclerView
  • Kotlin 코틀린의 SharedPreferences
영드로이드개발자
영드로이드개발자
도전을 즐기는 안드로이드 개발자 현영우의 개발 Blog

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.