layout: post
title: "Retrofit"
date: 2021-12-19T14:25:52-05:00
author: sangyeop
categories: Android
HttpClient
라이브러리REST API
, HTTP 통신
을 간편하게 사용할 수 있도록 만들어진 자바 라이브러리Http 통신을 가장 간단하게 사용하는 방법으로는 HttpURLConnection
이라는 자바 내장기능을 이용하는 방법이 있다. 그러나 이를 사용하여 기능을 구현하기 위해서는 다음과 같은 사항들을 고려해야한다.
위와 같은 사항들을 개발자가 모두 처리해야한다는 의미이다.
그래서 이를 쉽게 처리하기 위해 나온 라이브러리들이 바로 Retrofit
OkHttp
Volley
와 같은 라이브러리들이다.
dependency(build.gradle) 추가
인터페이스에 HTTP API 기술
public interface TestService {
@GET("/api/users/2")
Call<Object> getTest();
}
retrofit은 인터페이스에 기술된 명세를 Http API
로 전환해 준다. 따라서 우선 우리가 요청할 API들에 대한 명세를 인터페이스에 기술해두면 좋다.
API Annotation
GET
POST
DELETE
PUT
지원
반환타입
Call<객체타입>
의 형태로 기술해야 한다.
public class RetrofitClient {
private static final String Base_URL = "http://reqres.in/";
public static TestService getApiService(){
return getInstance().create(TestService.class);
}
private static Retrofit getInstance(){
Gson gson = new GsonBuilder()
.setLenient()
.create();
return new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
}
}
[https://reqres.in/](https://reqres.in/)
과 같은 Open REST API TEST 서버를 이용하는 것도 좋은 방법setLenient()
설정이 된 Gson 객체를 생선한다Retrofit.Builder()
를 이용해 baseUrl()
설정, 응답을 객체로 변환하기 위해 GsonConverter 설정을 하여 Retrofit Client를 생성getInstance()
메소드를 이용해 Retrofit 클라이언트를 생성한 뒤, Retrofit 클라이언트를 이용해, Http API 명세가 담긴 인터페이스의 구현체를 생성한 뒤 반환한다.동기 호출 ( 결과값 받기 )
public class MainTest {
public static void main(String[] args) {
Call<Object> getTest = RetrofitClient.getApiService().getTest();
try{
System.out.println(getTest.execute().body());
} catch (IOExeption e) {
e.printStackTrace();
}
}
}
앞서 생성한 HTTP API 명세가 담긴 인터페이스에 getTest()
메소드의 결과값을 Call<Object>
로 지정했기 때문에, 결과값 또한 Call<Object>
에 담아준다. 이후 결과값이 담긴 객체의 execute()
메소드를 호출하면 요청이 전달된다.
해당 링크의 내용임 : [https://galid1.tistory.com/617