마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

간단한 코드에 대한 질문입니다..

0 추천

Retrofit을 사람들은 어떻게 사용하는지 공부하고 있는데 처음부터 막혀서 질문드립니다.

public static RetrofitAPI getApiService(){
            return getInstance().create(RetrofitAPI.class);
        }

RetrofitAPI라는 인터페이스는 만들지는 않았지만 있다고 가정 하에 질문하겠습니다.

RetrofitAPI getApiService()의 뜻이 

인터페이스 RetrofitAPI에  getApiService 메소드를 생성하고 getApiService메소드는 리턴 값으로 RetrofitAPI의 인스턴스를 생성하고 생성한 인스턴스의 객체를 리턴한다는건가요 ?...

getter와 setter의 개념이 들어간거 같긴한대.. getInstance().create()에서 create가 왜 나온건지 모르겠네요 ..

 

전체 코드는 아래와 같습니다.

package com.example.myapplication;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitClient {

        private static final String BASE_URL = "http://sinwongyoon.ivyro.net/";

        public static RetrofitAPI getApiService(){
            return getInstance().create(RetrofitAPI.class);
        }

        private static Retrofit getInstance(){
            Gson gson = new GsonBuilder().setLenient().create();
            return new Retrofit.Builder()
                       .baseUrl(BASE_URL)
                       .addConverterFactory(GsonConverterFactory.create(gson))
                       .build();
        }
    }

 

AndroidDdobot (260 포인트) 님이 2021년 11월 17일 질문
AndroidDdobot님이 2021년 11월 17일 수정

1개의 답변

+1 추천
Retrofit은 API를 호출할 Interface만 선언하고 개발자가 직접 생성하지 않기 때문에, Retrofit.create를 통해서 실제 Interface의 구현 클래스를 만들어주게 됩니다. create()와 같은 걸 Factory method라고 하는데 생성과정이 복잡하거나 할 때 별도의 객체를 생성하는 메소드를 두어 이걸 강제적으로 사용하게 만드는 거죠.

getInstance()는 Retrofit 인스턴스를 리턴합니다. Retrofit은 Retrofit.create를 통해 API interface의 구현 인스턴스를 리턴하구요. 내부는 복잡하지만, 사용은 매우 간단합니다.
spark (227,830 포인트) 님이 2021년 11월 17일 답변
Retrofit 공부하는 거 많이 어렵네요 .. 다른 부분은 그나마 빨리 공부했는데 서버통신 라이브러리는 처음사용해보는거라... 힘드네요 ..

대부분 정형화 되가지구 똑같이 사용하는 거 같은대.. 일단 외워야겠네여 ..
Http 통신, 구체적으로 Rest API 가 일반적으로 어떻게 동작하는지를 먼저 공부하세요. 라이브러리는 사용법에 가까우므로, Rest API가 동작하는 원리를 아시면 사용하기가 훨씬 더 수월합니다.
...