본문 바로가기
Language/Kotlin

Retrofit(feat. 시뮬레이션 코드)

by 시니성 2023. 8. 25.

Retrofit은 Square에서 제공하는 안드로이드 및 자바를 위한 타입-안전한 HTTP 클라이언트입니다. 그것은 API를 자바 인터페이스로 선언하는 방식을 사용합니다. 이를 통해 개발자는 네트워크 요청을 깔끔하게 조직하고 쉽게 통합할 수 있습니다.

Retrofit의 주요 특징:

  1. 타입 안전: Retrofit은 데이터를 자동으로 해당 자바 데이터 타입으로 변환해줍니다.
  2. 호환성: JSON, XML 및 기타 웹 표준을 지원합니다.
  3. 확장성: 사용자 지정 타입 컨버터, 인터셉터, 인증 등 다양한 기능을 추가할 수 있습니다.
  4. 효율성: Retrofit은 OkHttp와 함께 작동하여 네트워크 호출을 효율적으로 관리합니다.

예시 시뮬레이션 상황:

'BookAPI'라는 간단한 API를 사용하여 책 정보를 가져오려고 합니다. 이 API는 책의 제목을 기반으로 책의 세부 정보를 반환합니다.

Retrofit 설정:

  1. Retrofit 인스턴스 생성:
    먼저, Retrofit.Builder를 사용하여 Retrofit 인스턴스를 만듭니다.
Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://example.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .build();
  1. API 인터페이스 정의:
    API 응답과 요청을 정의하기 위해 인터페이스를 사용합니다.
public interface BookAPI {
    @GET("book/{title}")
    Call<Book> getBookDetails(@Path("title") String title);
}

이 인터페이스에서 @GET은 HTTP GET 요청임을 나타냅니다. {title}은 URL의 일부로써 나중에 실제 값으로 대체됩니다.

  1. API 인터페이스의 인스턴스 생성:
BookAPI bookAPI = retrofit.create(BookAPI.class);
  1. API 호출:
Call<Book> call = bookAPI.getBookDetails("TheGreatGatsby");
call.enqueue(new Callback<Book>() {
    @Override
    public void onResponse(Call<Book> call, Response<Book> response) {
        if (response.isSuccessful()) {
            Book book = response.body();
            // TODO: 데이터를 처리합니다.
        } else {
            // TODO: 에러 처리
        }
    }

    @Override
    public void onFailure(Call<Book> call, Throwable t) {
        // TODO: 네트워크 에러 처리
    }
});

여기서 enqueue 메서드는 비동기적으로 요청을 실행합니다. onResponse는 요청이 성공하면 호출되고, onFailure는 네트워크 오류와 같은 문제가 발생할 경우 호출됩니다.

결론

Retrofit은 복잡한 네트워크 작업을 간단하게 만들어주는 강력한 도구입니다. API를 자바 인터페이스로 감싸 간편하게 요청을 정의하고 응답을 처리할 수 있습니다. 이로 인해 개발자는 네트워크 코드에 대한 부담을 줄이고 더 중요한 비즈니스 로직에 집중할 수 있습니다.