2026/04/16

오늘의 이야기

Retrofit을 이용한 REST API 활용 방법


주변기기 통신 형상화 feat AI



개요


Retrofit은 Android 및 Java 애플리케이션에서 REST API를 호출하기 위해 널리 사용되는 타입 안전 HTTP 클라이언트입니다. 이 글에서는 Retrofit을 이용하여 REST API를 호출하는 방법과 함께 발생할 수 있는 오류 상황과 해결 방법을 소개합니다.


1. 의존성 추가


프로젝트에 Retrofit과 OkHttp를 포함시키기 위해 build.gradle 파일에 다음과 같은 종속성을 추가합니다.



groovy



dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
}




2. API 인터페이스 정의


API 엔드포인트를 정의합니다. 예를 들어, 사용자 정보를 쿼리 파라미터로 전달하여 요청하는 경우를 보여드립니다.



java



import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;

public interface ApiService {
@GET("users")
Call<UserResponse> getUser(@Query("id") int userId);
}




3. 데이터 모델 정의


API 응답을 매핑할 데이터 모델 클래스를 정의합니다.



java



public class UserResponse {
private int id;
private String name;
private String email;

// Getters and Setters
public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}
}




4. Retrofit 인스턴스 생성


OkHttp 클라이언트를 설정하고, Retrofit에 통합합니다.



java



import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitClient {

private static final String BASE_URL = "https://api.example.com/";
private static Retrofit retrofit;

public static Retrofit getRetrofitInstance() {
if (retrofit == null) {
// HttpLoggingInterceptor 설정 (옵션)
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);

// OkHttpClient 설정
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(logging) // 로깅 인터셉터 추가
.build();

// Retrofit 인스턴스 생성
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient) // 커스텀 OkHttpClient 설정
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}

public static ApiService getApiService() {
return getRetrofitInstance().create(ApiService.class);
}
}




5. API 호출 및 응답 처리


API를 호출하고 응답을 처리하는 코드를 작성합니다.



java



import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class Main {
public static void main(String[] args) {
ApiService apiService = RetrofitClient.getApiService();
Call<UserResponse> call = apiService.getUser(1);

call.enqueue(new Callback<UserResponse>() {
@Override
public void onResponse(Call<UserResponse> call, Response<UserResponse> response) {
if (response.isSuccessful()) {
UserResponse user = response.body();
System.out.println("ID: " + user.getId());
System.out.println("Name: " + user.getName());
System.out.println("Email: " + user.getEmail());
} else {
System.err.println("Request failed. Code: " + response.code());
}
}

@Override
public void onFailure(Call<UserResponse> call, Throwable t) {
t.printStackTrace();
}
});
}
}




오류 상황과 해결 방법



  1. NoClassDefFoundError: com/google/gson/Gson

    gradle



    implementation 'com.google.code.gson:gson:2.8.7'





  2. 이 오류는 Gson 라이브러리가 프로젝트에 포함되지 않았을 때 발생합니다. Gradle 파일에 다음과 같이 Gson 종속성을 추가하여 해결할 수 있습니다.

  3. NoClassDefFoundError: okio/Sink

    gradle



    implementation 'com.squareup.okio:okio:2.10.0'





  4. 이 오류는 Okio 라이브러리가 프로젝트에 포함되지 않았을 때 발생합니다. Gradle 파일에 다음과 같이 Okio 종속성을 추가하여 해결할 수 있습니다.

  5. Request failed. Code: 404

  6. 이 오류는 요청한 리소스를 찾을 수 없을 때 발생합니다. API 엔드포인트와 쿼리 파라미터가 올바른지 확인하십시오.


결론


Retrofit과 OkHttp를 사용하여 REST API를 호출하는 방법과 함께, 발생할 수 있는 일반적인 오류와 그 해결 방법을 소개했습니다. 이 글이 Retrofit을 활용하는 데 도움이 되길 바랍니다.





댓글 없음:

댓글 쓰기

오늘의 이야기

Python에서 문자열 유사도 검색 방법 문자열 유사도 검색은 두 문자열이 얼마나 유사한지를 판단하는 중요한 작업입니다. 이는 텍스트 마이닝, 자연어 처리, 데이터 정제 등 다양한 분야에서 사용됩니다. 이번 포스트에서는 Python을 사용하여...