본문 바로가기
언어 공부/Android

[Android] Retrofit2, Rxjava2, OkHttp에 대해서 알아보자

by 안다니. 2020. 9. 29.
반응형

 

 

  Retrofit2는, Android에서 API 서버로 Request를 보내야 한다고 생각이 들면, 쓰는 라이브러리라고 합니다.

 

// <AndroidManifest.xml> 파일에 아래 코드 추가
   
    //서버로 데이터를 주고 받을 경우에 Internet 퍼미션이 꼭 필요합니다 까먹지 말자!
    <uses-permission android:name="android.permission.INTERNET"/>
    
    
    
// <build.gradle (Module:app)> 파일에 해당 Dependency 추가 

    implementation 'com.squareup.retrofit2:converter-gson:2.6.2' //현재 최신 버전은 모르겠네요.
    implementation 'com.squareup.retrofit2:adapter-rxjava2:latest.ver'

 

위의 코드 블럭의 내용대로 먼저 설정을 해, 의존성을 부여합니다.

 

RxJava란 무엇인가

이런 상황일 때 사용하면 좋다고 합니다.

 

1. 마우스 움직임, 버튼 클릭과 같은 UI 이벤트 

2. 속성 변경, 컬렉션 업데이트, 주문 완료, 등록 승인 등의 도메인 이벤트

3. 메시지 버스의 브로드캐스트처럼 대기 시간이 짧은 미들웨어의 푸시 이벤트

 

  다시 말해, rx는 Reactive라는 단어에 알맞은 상황에 적용할 때 가장 valuable하다고 말하고 있습니다. 또 RxJava2는 Java8을 완벽하게 지원을 합니다. 그런데 반대로 생가을 한다면, Java8을 꼭 알고 접근을 해야한다고 생각합니다. Java8 은 코드를 간결하게 하며, 가독성을 높여줍니다. 그러니 선택이 아닌 필수라고 할 수 있겠네요

 

  Java8의 특징은 람다식이라고 생각 합니다.

 

람다식은 이 모든 과정없이 오직 람다식 자체만으로도 이 메서드의 역할을 대신할 수 있습니다. 게다가 람다식은 메서드의 매개변수로 전달되어지는 것이 가능하고, 메서드의 결과로 반환 될 수 있습니다.

 

일반 메서드

반환타입 메서드이름(매개변수 선언) { 문장들 }

 

람다식

(매개변수 선언) -> {  문장들 }

 

아래 블로그를 보셔도 좋을 거 같습니다 ^____^

 

자바8: 람다 1부 - 람다식, 타입 추론, 어휘 범위

Engineering Blog by Dale Seo

www.daleseo.com

 

 

반응형

 

 

OkHttp란 무엇인가

  OkHttp는 Square에서 제공하는 오픈소스 프로젝트로, 동기, 비동기 방식을 각각 제공한다. 이러한 방식을 개발자가 선택하여  사용할 수 있습니다.

  빌더 패턴으로, 편하게 사용할 수 있습니다. 그러면 소스코드를 봅시다.

 

 

// OkHttp빌더 생성
private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder()
            .connectTimeout(3, TimeUnit.MINUTES)
            .readTimeout(3,TimeUnit.MINUTES)
            .writeTimeout(3,TimeUnit.MINUTES);
private static String BASE_URL = "서버의 URL을 입력";

    public static APIService create() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .client(httpClient.build())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) //Call 데이터를 Rx객체로 변경
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        return retrofit.create(APIService.class);

 

그리고 Interface로 APIService 객체를 만들었습니다.

String baseUrl =  "BaseUrl을 적으세용";

    @Headers("Content-Type: application/json")
    @POST(baseUrl + 뒤에 붙는 이름)
    Observable<클래스 이름<클래스 이름>> Shop(@Body JsonObject jsonObject);

위의 코드로 설명하자면, 2번 쨰 블락에 String BASE_URL 이 http://www.naver.com 의 형식이 되는 것이며, 3번 쨰 블락에 있는 baseUrl은 그 뒤에 붙는 url을 말합니다.

 

그리고 여기서 Observble이 등장하게 됩니다.

 

아래 잘 설명이 되어 있는 것 같아서 아래에 들어가서 꼭 한번 읽어보시길 바랍니다 : )

 

RxJava2 정리 #1 - Observable과 기본 연산자 - Jungwoon Blog

RxJava2 정리 #1 - Observable과 기본 연산자 리액티브 프로그래밍이 핫하다고 해서 공부하면서 정리해봅니다. 참고 자료는 RxJava 프로그래밍를 참고해서 만들었습니다. 양이 너무 많아서 나눠서 포스�

jungwoon.github.io

 

반응형

JsonObject jsonObject = new JsonObject();

jsonObject.addProperty("brndCd", "KS");
jsonObject.addProperty("shopCd", "zzzz");
jsonObject.addProperty("searchWord","");   //말 그대로 JsonObject에 프로퍼티를 추가합니다.
        
        
  Disposable disposable = 서버API.create().Shop(jsonObject)
                .subscribeOn(Schedulers.newThread())  
                .observeOn(AndroidSchedulers.mainThread()) 
                .subscribe(this::ShopResult, this::apiCallError);
					//성공을 했으면, 결과를 말해라, 실패 했으면 apiCallError
                    //위 두개의 this:: 는 메소드를 나타냅니다. 따로 만들어줘야 합니다.
                    
        compositeDisposable.add(disposable);

 

 

 

긴 글 읽어주셔서 감사합니다 ! : )

혼자 공부하면서 나름 내용을 정리 했습니다.

반응형

댓글