계발자 블로그
[Android] Retrofit2 본문
Retrofit이란?
- Squareup사에서 만든 API 통신 라이브러리입니다.
- 네트워크 통신을 위해 비동기 처리로 사용해왔던 AsyncTask보다 3배 ~ 10배의 성능이 향상되었습니다.
- 반복된 작업을 라이브러리로 넘겨서 처리가 되어 구현이 간단합니다.
- Annotation 사용으로 코드의 가독성이 뛰어나고 직관적인 설계가 가능합니다.
사용법
우선 이번에 사용할 url 주소입니다. https://run.mocky.io/v3/b8384223-152e-4d1a-a90c-f793731e5715
보시면 json 형태로 데이터들이 들어가 있습니다.
1. Gradle 의존성 추가
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
retrofit과 converter를 추가해줍니다.
컨버터는 json 형태의 데이터 타입을 객채로 변환 해주는 컨버터입니다.
2. Manifest에 인터넷 권한 추가
해당 위치에 추가해주시면 됩니다.
3. Model 클래스 만들기
우리가 받아 올 데이터에 맞게 넣어주면 됩니다.
4. DTO 클래스 만들기
위에서 만들어준 모델을 담고 있는 Dto 클래스 입니다.
5. Interface 만들기
지금은 서버에 있는 값을 가져 오는 작업만을 하기 때문에 @GET을 사용할겁니다.
@GET은 서버에 요청하는 메소드입니다 기본 url인 https://run.mocky.io 뒤에 오는 url을 넣어주면 됩니다.
Call 안에 위에서 만들어준 Dto 클래스를 넣어주면 됩니다.
만약 서버에 전송할 데이터가 있다면 POST 메서드를 사용하고 BODY에 전송할 데이터를 담습니다.
6. Retrofit 인스턴스 생성
onCreate 안에서 모두 적어주기에는 길어서 함수로 따로 빼놓고 onCreate에서는 houseAPI()만 작성했습니다.
baseUrl에는 전체 Url의 말 그대로 기본 url 주소를 넣어주면 됩니다.
GsonConverterFactory 이부분이 json을 알아서 파싱해주는 부분입니다.
AsyncTask에서 하던 하나씩 파싱해주는 일이 없어지니까 코드가 줄어 가독성도 좋아지고 사용하기도 간편해집니다.
통신에 성공하면 onResponse로 실패하면 onFailure로 가게 됩니다.
resoponse.isSuccessful에서 받아온 데이터를 처리하면 되는데 저는 .not으로 예외처리를 했습니다
그리고 그 밑에 log로 받아온 데이터를 찍어 봤습니다.
잘나옵니다!
위에서 제가 모델 클래스를 dto 클레스에서 리스트로 만들어서 사용했는데
이렇게 안하고 모델 클래스를 dto 클래스로 바로 사용하셔도 됩니다!
'Android' 카테고리의 다른 글
[Android] Bottom Navigation View (0) | 2022.07.19 |
---|---|
[Android] Fragment 사용하기 (0) | 2022.07.18 |
[Android] ViewPager2 (0) | 2021.12.29 |
[Android] Intent 사용하기 (0) | 2021.12.07 |
[Android] RecyclerView 사용하기 (0) | 2021.11.30 |