TIL 33일차 - Retrofit (24.05.01.)

남형주·2024년 5월 1일

TIL

목록 보기
33/35

오늘은 심화과정 강의를 전부 들었다.
위치정보를 활용하는 방법과 Retrofit에 관한 것이었는데 매우매우 유용한 내용이어서 활용할 생각에 조금 설렜던 것 같다.

공공데이터포털은 예전에 직장생활 할 때 종종 이용하곤 했던 곳인데 이런 식으로 활용하게 되니 활용 방식이 무궁무진한 것 같았다.
시간만 많으면 여러가지로 실습을 해보고 싶은 생각이 들었다.

이를테면 모범음식점 현황이 있다 치면 현위치 정보를 받아와 근처의 맛집 리스트를 뿌려준다거나 이름을 검색해볼 수 있다거나 하는 식으로 말이다.

어쨌거나 간단하게 retrofit에 관해 복습할 겸 정리해봐야겠다.



Retrofit이란?

  • REST API의 HTTP 요청을 자바 인터페이스로 변환하는 것이 주목적

► REST API란 Representational State Transfer / Application Programming Interface의 약자로 앱이 요청할 수 있는 프로그래밍 가능한 의사소통 가능한 접점을 웹의 장점을 최대한 활용할 수 있는 형태로 구현한 아키텍처 스타일을 말한다. WWW가 이 기반으로 구성되어 있다.

► 서버가 전송하는 데이터 교환 방식은 JSON(JavaScript Object Notation)이고, 이걸 프로그래밍 언어의 객체로 변환할 때 사용하는 것이 Gson이다.



Retrofit 활용하기!

1. API 인터페이스 정의

interface ApiService {
    @GET("users/{id}")
    fun getUser(@Path("id") id: Int): Call<User>
}

2. Retrofit 인스턴스 생성

val retrofit = Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .build()

val apiService = retrofit.create(ApiService::class.java)

3. 응답 처리하기

apiService.getUser(id).enqueue(object: Callback<User> {
    override fun onResponse(call: Call<User>, response: Response<User>) {
        // 처리
    }

    override fun onFailure(call: Call<User>, t: Throwable) {
        // 오류 처리
    }
})

콜백을 사용하여 백그라운드에서 실행되는 비동기식 요청이다. 응답이 오면 해당 콜백이 호출된다.

if (response.isSuccessful) {
    val user: User? = response.body()
} else {
    // 오류 메시지 처리
    val error: String = response.errorBody()?.string() ?: "Unknown error"
}

response 객체를 통해 HTTP 응답의 여러 정보에 접근할 수 있다.

override fun onFailure(call: Call<User>, t: Throwable) {
    // 오류 메시지 표시
    Log.e("API_ERROR", t.message ?: "Unknown error")
}

Retrofit의 onFailure 콜백은 네트워크 오류나 데이터 변환 오류 등에서 호출된다.





아무래도 하나 주제를 정해서 실습을 하나 해봐야겠다. 챌린지반 과제도 한참 밀렸는데 이게 맞는지 모르겠다.

미세먼지 앱 만드는 실습을 보며 다시 한번 retrofit과 관련된 것들을 정리해봐야될 것 같다.

내일은 과제 틀을 빠르게 끝내고 다음 단계로 넘어가야겠다.

0개의 댓글