Tech Log

Retrofit 2 본문

Android/etc

Retrofit 2

yuhee kim 2021. 12. 28. 20:04

개요 : 안드로이드 스튜디오에서  mySQL의 데이터를 받아올 때 Retrofit2 라이브러리를 사용하게 되었다. retrofit2에 대해서 복습해볼겸 포스팅을 작성해보았다.

외부 DB인 mySQL의 데이터를 가져오기 위해서 node.js를 사용해서 서버를 구축하고, 그 서버를 Retrofit 2로 안드로이드 스튜디오와 통신해주었다.

 

Retrofit2이란?

네트워크로부터 전달된 데이터를 프로그램에서 필요한 형태의 객체로 받을 수 있게 하는 HttpClient 라이브러리이다.

이때 네트워크로부터 전달된 데이터를 프로그램에서 필요한 형태의 객체로 받을 수 있다는 말을 TypeSafe하다고 표현할 수 있다.

 

Retrofit2를 쓰는 이유?

Retrofit2는 Http 통신을 쉽게 하고 속도가 빠르다 또한 코드의 가독성도 좋다.

Retrofit2를 쓰는 이유를 한 마디로 설명하라고 하면 위와 같은 이유가 된다.

일반적으로 서버와 통신을 할 때는 Http를 이용해서 통신을 하게 되는데, 이때 HttpUrlConnection을 사용하게 된다.

이것을 사용하면 connection 설정, input / output stream 생성 및 할당이 반복적으로 일어난다.

또한 자유도가 높아 직접 구현해야 할 것들이 많다. 따라서 요청과 응답을 위한 코드의 양이 많아진다. 여기서 스레드를 사용하기 때문에 또 코드가 길어진다.

 

출처 : stack overflow(https://stackoverflow.com/questions/16902716/comparison-of-android-networking-libraries-okhttp-retrofit-and-volley)

위 사진은 Async와 Volley, Retrofit의 performance benchmarks이다. 숫자가 작을 수록 좋다.

AsyncTask는 Http 통신을 하기위해 사용하는 비동기 클래스이다. Volley는 안드로이드에서 제공하는 Retrofit과 같은 통신 라이브러리이다. (AsyncTask는 android 11부터 deprecated 되었다)

따라서 HttpUrlConnection, Volley보다 여기서는 Retrofit2를 사용하는 것이 효율적이라고 판단했다.

 

Retrofit 2 사용 방법

1. app 수준 gradle에 아래와 같이 의존성을 추가해준다.

2. 형식에 맞춰서 데이터를 받아오고 싶다면 데이터 클래스를 작성해준다. (선택)

변수명은 JSON 형식에 맞춰서 작성해주었다.

변수명을 JSON 형식에 맞지 않게 짓고 싶다면, gson 라이브러리를 사용하여 @SerializedName 키워드를 사용하면 된다.

 

3. 서버에 특정 데이터를 보내서 그 값에 맞춰 데이터를 받아오고 싶다면, 서버로 보낼 interface도 구현해줘야 한다. (선택)

POST 형식으로 데이터를 전송해주었다. @POST 어노테이션 옆에는 데이터가 있는 경로를 써준다. 예를 들면 JSON 파일의 경로를 적어준다.

fun requestData()에는 id를 전송하여 2번에서 작성해준 getdata 데이터 형식으로 값을 받아온다고 명시하였다.

 

4. 서버로부터 받아온 데이터를 쓸 레이아웃의 .kt 파일에서 네트워크 통신을 구현한다.

 

 

참조

'Android > etc' 카테고리의 다른 글

[Android] Jetpack  (0) 2022.06.21
[Android] SharedPreferences  (0) 2022.06.15
[Android] Glide 라이브러리의 사용  (0) 2022.06.11
[Android] Handler 개념  (0) 2022.06.07
[Android] Fragment  (0) 2022.06.01
Comments