Retrofit이란?

구교석·2024년 5월 1일
post-thumbnail

Retrofit이란?

Retrofit은 주로 RESTful API와 통신하기 위한 라이브러리이므로, 해당 API가 RESTful 규칙을 따른다면 Retrofit을 사용하여 통신할 수 있다.
때문에 서버를 구성한 언어와 상관없이 Retrofit을 이용해 통신할 수 있다.
간단히 말하자면 Retrofit는 서버와 클라이언트 간 http 통신을 위한 라이브러리이다.

참고


예전에도 통신을 편하게 할 수 있도록 도와주는 라이브러리가 있었다.

HttpClient, Volley, OKhttp... 하지만 앞서 말한 2개는 Deprecated 되어 역사 속으로 사라졌고, OKhttp를 이용해서 더 편하고 사용하기 쉽게 만든 것이 Retrofit이다.

OKhttp를 기반으로 Retrofit을 만들었기 때문에 Retrofit 라이브러리를 추가하면 OKhttp의 메서드도 사용할 수 있다.

Retrofit 활용 방법

Retrofit을 사용하여 통신할 때는 주로 JSON 형식의 데이터를 주고받습니다.

1.데이터 모델 정의: 통신할 데이터의 구조를 나타내는 자바 클래스를 정의합니다. 이 클래스는 서버에서 주고받는 JSON 데이터와 일치해야 합니다.

public class Post {
    private int id;
    private String title;
    private String body;

    // Getters and setters
}

2.API 인터페이스 정의: 서버의 엔드포인트와 요청 메서드를 정의하는 Retrofit 인터페이스를 작성합니다.

public interface ApiService {
    @GET("posts/{id}")
    Call<Post> getPost(@Path("id") int postId);
}

3.Retrofit 객체 생성: Retrofit 객체를 생성하고 서버의 기본 URL을 설정합니다.

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .build();

ApiService service = retrofit.create(ApiService.class);

4.요청 보내기: 정의한 API 인터페이스를 사용하여 서버에 요청을 보냅니다.

Call<Post> call = service.getPost(1);
call.enqueue(new Callback<Post>() {
    @Override
    public void onResponse(Call<Post> call, Response<Post> response) {
        if (response.isSuccessful()) {
            Post post = response.body();
            // 데이터 처리
        }
    }

    @Override
    public void onFailure(Call<Post> call, Throwable t) {
        // 실패 처리
    }
});

이렇게 Retrofit을 사용하면 서버와 통신하기 위한 데이터 형태를 정의하고, 해당 데이터를 서버로부터 받아올 수 있습니다. Retrofit은 주로 JSON 형식의 데이터를 사용하며, Gson이나 Moshi와 같은 라이브러리를 통해 JSON 데이터를 자바 객체로 변환하고 반대로 변환할 수 있습니다.

다른 데이터 형태는 html이있다.

보내는 요청의 형태도 여러 가지가 있다.
GET, POST, PUT, DELETE 총 4가지가 있다.
만약 Request Method가
GET으로 되어있다면 우리는 GET 요청을 해야만 응답을 받을 수 있고
POST로 되어있다면 POST 요청을 해야만 응답을 받을 수 있다.
즉 사이트에서 정해놓은 방법대로 요청을 해야 한다는 것이다.

참고사이트


Retrofit이란? (사용하기 전에 알아야 할 것들)
[Kotlin 개념] 레트로핏 (Retrofit)

profile
끊임없이 노력하는 개발자

0개의 댓글