Skip to content

Retrofit, Okhttp

박진성 edited this page Dec 13, 2023 · 2 revisions

개요

  • Squareup 사의 Http 클라이언트 라이브러리
  • 내부적으로 OkHttp3 를 사용하고 있음
  • Rest API 를 사용할 때, 더 편리하게 Http 통신을 할 수 있게 도와줌



왜 라이브러리를 사용해서 통신하는가?

💡 → 자바를 사용한다면, 별도의 라이브러리를 활용할 필요 없이, HttpURLConnection 을 사용하면 되지만, 대부분 라이브러리를 사용하여 Http 통신을 구현한다.
  • 직접 Http 통신을 구현을 하게되면, 여러 기초적인 작업들을 직접 코딩해야된다
    • Threading,
    • 응답 분석,
    • 오류 처리,
    • 실패요청 재시도,
    • 캐싱 ,
    • 연결
  • 라이브러리를 활용함 으로서, 이런 작업들을 대신 맡기게 되는 것이다.



Retrofit2 선택 이유

💡 그냥 대표적으로 많은 개발자들이 사용하니까?… 는 자료가 많다는 장점이 될 수가 있겠지만, 선택이유가 될 수 없다. 우선 기본적으로 Retrofit 은 HTTP를 추상화하여 코드를 더 깔끔하게 작성할 수 있게 해줌. 고수준의 RESTful 서비스 구현에 적합함

Type-Safe 한 형태이다

  • 런타임에 에러를 확인하는 것이 아닌, 컴파일 과정에서 에러를 확인해주는 Type-Safe 한 형태를 가진다

가독성이 뛰어나다

  • Annotation 사용으로, 가독성이 좋음

복잡하지 않은 구현

  • Retrofit2 에서 제공하는, Call Wrapper 와 Response Wrapper 를 사용하면, 네트워크 통신 결과값을 손쉽게 처리 간으
  • Interface를 생성하고, create 해주면, interface 에 정의한 메서드의 구현체를 알아서 생성해준다. 따라서 Retrofit2 통신 구현체를 직접 생성해 줄 필요가 없다.

빠른 성능

  • OkHttp 기반이라 다른 라이브러리보다 빠른 성능을 가짐



Okhttp 란?

  • Retrofit2 와 같이 Square 사에 의해 개발된 오픈 소스 HTTP 클라이언트 라이브러리
  • HTTP 요청과 응답을 생성하고 처리하는 기본 기능을 제공함
  • HTTP 헤더, 바디 등 세부 사항을 제어할 수 있으며, 요청 및 응답에 대한 세밀한 제어가 가능
  • **낮은 수준의 HTTP 작업 적합!!**



Retrofit 과 Okhttp 를 함께 사용한 이유

  • 위에서 언급했다시피, Retrofit 은 고수준의 HTTP 통신을 하기에 적합하다

  • Okhttp 는 낮은 수준의 HTTP 작업의 적합하기 때문에, Retrofit 과 Okhttp 를 같이 사용하게 되면, 네트워크 통신 매니징이 더 원활해진다.

  • 대표적 기능

    • Logging : 네트워크 통신의 내용을 Logging 할 수 있다
    • Interceptor : 네트워크 통신시, 반복되는 헤더를 주입할 수 있다
Clone this wiki locally