개발관련일지

AND ] 레트로핏 사용하기전 찾아본것들 본문

개발기록/안드로이드

AND ] 레트로핏 사용하기전 찾아본것들

BEECHANGBOT 2020. 5. 25. 15:14

retrofit - 기계속에 없던 부품을 새로 장착하다

 - 서버와 http통신을 통해 전달된 데이터를 앱에서 받아 관리 할 수 있게 하는 라이브러리 (httpUrlConnetion으로 서버와 비동기로 통신하는걸 해주고 필요한 형태의 객체로 만들어주는 역할이라 이해함)

 

Square Inc -

 레트로핏을 배포하는 회사이며 , 안드로이드에서 통신에 사용되는 OkHttp의 같은 회사에서 배포하고있음. 레트로핏은  OkHttp의 네트워크 계층을 활용하여 구축된다함 

 

어노테이션?? 

레트로핏 한글문서에 사용되는 나오는 글이다. 일단 요청 메소드는 REST API인걸로 보아 알았고 어노테이션이 먼지 몰라서 같이 찾아 보았음

 

Annotation - 네이버 사전 -  주석달기  >> 무언가를 설명해 주는 거 같다.  

  위키백과 - 자바 에너테이션 - 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종 이며 @ 기호를 앞에 붙여서 사용한다 

  메타데이터 - 위키백과 - 데이터에 대한 데이터 , 어떤 목적을 가지고 만들어진 데이터

 

기본적으로 자바에서 사용하는 어노테이션으로는 가장 많이보는 @Override , @Deprecated 등등 이 있다.

 

 

컨버터 설정

데이터를 서버로 부터 리스폰 받으면 안드로이드에서 사용할 데이터 형식으로 변환하는데 도와주는 라이브러리 목록이며 필요한 데이터 타입에 따라서 추가해서 사용하면 된다.

 

 

레트로핏의 구성요소

Retrofit 객체 생성

REST API에 따른 Interface 선언

 

Retrofit 빌더 객체 생성

public class RetrofitClient {

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ConnectServer.ip) //클래스에 따로 서버아이피를 변수로 가져와서 사용
                .baseUrl("YourServer/") //직접 입력 후 사용 마지막에 /를 넣어줘야 온전하게 경로로 전달됨
                //위의 메소드를 사용하여 어떤 서버로 통신을 요청할지 정함
                .addConverterFactory(GsonConverterFactory.create())
                //통신완료후 서버로 부터 리스폰 받는 데이터를 어떤 컨버터를 이용하여 데이터를 파싱할지 정하는 메소드
                .build();
                //빌더가 설정한 정보를 객체를 만들어서 반환하도록 정함
    
    GithubService service = retrofit.create(GithubService.class);
}

 

Interface 설정

public interface GithubService {

    @GET("users/{user}/repos")
    //@GET http요청을 GET으로 한다고 표시하는거

        //@Path Url중 일부 경로가 동적으로 바인딩이 필요한 경우 문자열을 정의해놓고
        // 해당 문자열을 동적으로 바인딩해 동적으로 생성이 가능하다함
    Call<JsonArray> getUserRepositories(@Path("user") String userName);
   // Call은 JsonArray을 제네릭타입으로 사용하는 콜백 인터페이스
    
}

 

사용방법 -

GET어노테이션을 통해서 겟으로 요청한다고 명시가 되어있다. baseUrl에 이미 전송할 서버를 작성해 두었다. 

이제 서버에 요청을 할려면 baseUrl의 "urServer/" 하고 @GET("users/{user}/repos")가 합쳐져서 요청을 하는거다 

>> "urServer/users/{user}/repos"

 

인터페이스에 정의하는 Url은 서버를 제외한 파라미터를 입력하면 된다.

 

다음글

https://beeyoo0o0ncha.tistory.com/17

 

AND ] 안드로이드 레트로핏 사용하기

사용하기 전에 찾아서 정리한 게시글 https://beeyoo0o0ncha.tistory.com/16 레트로핏 인터페이스 선언 public interface RetroBaseApiService { String Base_URL = "YourServer"; @GET("/도메인 뒤의 디렉토리설..

beeyoo0o0ncha.tistory.com

 

 

참조 

 

레트로핏 공식

영문 설명 - https://square.github.io/retrofit/

한글 설명 -  http://devflow.github.io/retrofit-kr/

https://academy.realm.io/kr/posts/droidcon-jake-wharton-simple-http-retrofit-2/

 

 

어노테이션 참조 -

https://elfinlas.github.io/2017/12/14/java-annotation/

https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EC%95%A0%EB%84%88%ED%85%8C%EC%9D%B4%EC%85%98