Retrofit이란?
Retrofit은 Square에서 개발한 타입 안전한 HTTP 클라이언트로, REST API와의 상호작용을 단순화해준다. Retrofit을 사용하면 네트워크 요청을 쉽게 만들고 응답을 간단하게 처리할 수 있다. 또한, Gson과 같은 JSON 파서와 쉽게 통합할 수 있어 데이터 모델링도 편리하다.
1. Retrofit
implementation("com.squareup.retrofit2:retrofit:2.11.0")
Retrofit은 HTTP 클라이언트 라이브러리로, RESTful 웹 서비스와의 상호작용을 매우 쉽게 만들어준다. Retrofit을 사용하면 간단하게 API 인터페이스를 정의하고 네트워크 요청을 관리할 수 있다.
2. Gson 컨버터
implementation("com.squareup.retrofit2:converter-gson:2.11.0")
Gson은 Google에서 만든 JSON 라이브러리로, JSON 데이터를 Java 객체로 변환하거나 그 반대로 변환할 수 있다. Retrofit과 함께 사용하면 서버로부터 받은 JSON 응답을 쉽게 Java 객체로 변환할 수 있다.
3. OkHttp 로깅 인터셉터
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
OkHttp는 Retrofit의 기본 HTTP 클라이언트로 사용되며, OkHttp의 로깅 인터셉터는 네트워크 요청과 응답을 로그로 출력해준다. 이는 디버깅 시 매우 유용하며, 네트워크 요청의 내용을 쉽게 확인할 수 있다.
시작하기
나는 메모 API를 VSC 코드에서 작성 후 SQL과 연동하여 포스트맨에 실행시켰으며, 이렇게 개발한 메모API 를 이용하여 레트로핏2 를 사용 할 예정이다.
먼저 메니페스트에 인터넷 권한 설정해준다.
<uses-permission android:name="android.permission.INTERNET" />
Retrofit을 프로젝트에 추가하려면 먼저 build.gradle 파일에 의존성을 추가한다.
implementation("com.squareup.retrofit2:retrofit:2.11.0")
implementation("com.squareup.retrofit2:converter-gson:2.11.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
Retrofit 설정
먼저 도메인 사용을 위해 Config 클래스 하나 만들어준다(하드코딩 방지)
api 폴더를 하나 만들어 주고 NetworkClient 자바 클래스 만들어주기
코드 아래와 같이 작성하면 레트로핏 러이브러리 설정 및 코드 작성 끝
package com.kks.memo.api;
import android.content.Context;
import com.kks.memo.config.Config;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class NetworkClient {
public static Retrofit retrofit;
public static Retrofit getRetrofitClient(Context context){
if(retrofit == null){
// 통신 로그 확인할때 필요한 코드
HttpLoggingInterceptor loggingInterceptor =
new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
// 네트워크 연결관련 코드
OkHttpClient httpClient = new OkHttpClient.Builder()
.connectTimeout(1, TimeUnit.MINUTES)
.readTimeout(1, TimeUnit.MINUTES)
.writeTimeout(1, TimeUnit.MINUTES)
.addInterceptor(loggingInterceptor)
.build();
// 네트워크로 데이터를 보내고 받는
// 레트로핏 라이브러리 관련 코드
retrofit = new Retrofit.Builder()
.baseUrl(Config.DOMAIN)
.client(httpClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
'안드로이드 스튜디오' 카테고리의 다른 글
[안드로이드 스튜디오]Retrofit2 라이브러리를 이용하여 메모 API 서버와 통신하기(1)화면 구성 (4) | 2024.06.16 |
---|---|
[안드로이드 스튜디오]유튜브API 이용하여 앱에 검색결과 출력하기 (2) | 2024.06.16 |
[안드로이드 스튜디오]유튜브 API를 postman으로 활용하여 불러오기 (2) | 2024.06.12 |
[안드로이드 스튜디오]안드로이드 인텐트를 활용한 다양한 기능 구현하기 (2) | 2024.06.12 |
[안드로이드 스튜디오]안드로이드 앱에서 Glide를 사용한 효율적인 이미지 로딩 및 디스플레이 방법 (0) | 2024.06.12 |