본문 바로가기

APP 프로젝트/Toy project

2. Android Retrofit - GET 이용하기

새로 시작한 프로젝트의 서버와 통신을 위해 retrofit을 사용했고 로그인 과정에서 post 와 get을 이용해 서버와 통신에 성공했다. post에 관한 자세한 내용은 이전글에 기록되어 있다. 

 

 

1. Android Retrofit - POST 이용하기

프로젝트에 대한 전체적인 설명을 이틀 정도 숙지하고 난 후에 약 이틀간 안드로이드에서 REST API로 통신할 수 있는 Retrofit을 공부했다. 방학 동안 잠깐 찍먹했던 경험이 있어서 할만 하겠다는 생

self-motivated-developer.tistory.com

 

이전 게시물에 마지막 완료 화면을 제대로 추가하지 않았는데 get 과정과 post과정의 결과까지 이번 게시물에서 다루겠다. GET은 POST를 먼저 성공하고 시도해서 그런지 비교적 쉽게 데이터를 처리할 수 있었다.

 


 

기본적인 설정 과정은 건너뛰고, GET 메소드의 인터페이스를 작성하는 것부터 기록하겠다. 

 

@GET("{URL}/{code}")
    @Headers("Content-type: application/json")
    fun getToken(@Path("code") code : String,
                 @Header("register_token") token : String) : retrofit2.Call<RetrofitUserInfoGetDto>

 

@GET 의 파라미터에는 "url" 형식으로 넣어주면 된다. POST 에서는 요청을 보낼 때 body 부분에 들어갈 값을 넣어주는 @Body 를 사용했는데, GET 에서는 @Path@Header 를 사용해봤다. @Path의 경우 제일 위 url에 들어가는 부분에 {code}라는 부분에 들어갈 값을 동적으로 넣어주는데 쓰인다. @Header도 마찬가지로 파라미터로 받는 값을 header에 넣어주기 위해 사용한다. 

 

get의 경우 헤더와 메소드의 파라미터만 형식에 맞춰서 작성해주면 서버에서 보내는 데이터를 받아서 가공하는 형식이기 때문에 비교적 쉽게 데이터를 처리할 수 있다. 나는 RetrofitUserInfoGetDto 라는 Dto 파일을 만들어서 데이터를 받아 가공했다. 

 

인터페이스에서 선언한 메소드를 실제 파일에서 직접 사용할 때 역시 POST 메소드와 방식은 같다. 위의 GET 요청을 보내면 서버에서 오는 response를 loggingInterceptor로 로그를 찍어 보았다. GET 의 요청을 보냈고 코드는 200으로 전달되면서 서버에서 보내는 response가 잘 담겨서 온 것을 볼 수 있다. 

 

 

 

추가적으로 POST의 경우 다음과 같이 로그가 찍힌다.

 

 

이렇게 응답 역시 json의 형태로 오는 것을 볼 수 있는데, 나는 앞에서 설명한 대로 data class를 형식에 맞게 정의해두고, 그 데이터 타입으로 요청을 받았다. 해당 응답을 받고 난 후에 viewModel에 저장하고 가공해서 사용하는 것까지 연습해볼 예정이다.