OkHttp가있을 때 Retrofit을 사용하는 이유


107

OkHttp를 사용하면 HTTP 요청을 한 다음 서버에서 응답을 얻을 수 있습니다.

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
  .url(url)
  .build();
Response response = client.newCall(request).execute();

그런 다음 Gson lib를 사용하여 응답을 필요한 객체로 변환하십시오.

이것은 Square / OkHttp 문서에서 가져온 것입니다.

요청 / 응답 API는 유창한 빌더와 불변성으로 설계되었습니다. 동기 차단 호출과 콜백을 통한 비동기 호출을 모두 지원합니다.

stackOverFlow 에서 읽었습니다.

Retrofit은 가능한 경우 자동으로 OkHTTP를 사용합니다.

.

그래서 제 질문은 정확히 Retrofit이 무엇입니까?

OkHttp가 할 수없는 Retrofit은 무엇을 할 수 있습니까?!

OkHttp와 Gson이 요청 API 문제를 해결한다고 생각하는데 Retrofit은 어떤 문제를 해결합니까?


2
의견을 기반으로하며 그 자체로 종결 될 가능성이 있습니다. 문제의 사실은 둘 다 존재하고 아무도 죽지 않았다는 것입니다. 이는 둘 다 Android 개발자 커뮤니티의 눈에 유효한 사용 사례가 있음을 의미합니다.
fge aug

1
이 게시물을 확인하십시오. stackoverflow.com/q/16902716/1144203
ivan.sim 2016-08-27

@isim 전에이 링크를 보았지만 왜 Retrofit이 필요한지 이해할 수 없습니다! 그리고 Retrofit이 OkHttp를 사용하는 이유!
Mehrdad Faraji 2016-08-27

@MehrdadFaraji OkHttp가 원하는 것을 할 수 있다면 Retrofit이 필요하지 않습니다. 개조 사용 OkHttp 이유는 몇 가지가 OkHttp 사용하도록 설정할 Call인증서 고정 등 패턴, OkHttp 인터셉터를,
ivan.sim

rxjava와 개조를 사용하여 개조 사용하는 또 다른 이유는 일반적인 업계 관행이되었다
paul_hundal

답변:


95

OkHttp를 사용하면 HTTP 요청을 한 다음 서버에서 응답을 얻을 수 있습니다 ... 그런 다음 Gson lib를 사용하여 응답을 필요한 객체로 변환합니다.

코드 스 니펫에서 URL을 생성하고 실제로 Gson을 사용하여 JSON을 구문 분석하는 두 가지 주목할만한 단계를 건너 뛰었습니다.

그래서 제 질문은 정확히 Retrofit이 무엇입니까?

URL을 생성하고 (특정 REST API에 연결된 유형 인식 생성 코드를 사용하여) 실제로 Gson을 사용하여 JSON을 구문 분석합니다. 즉, 코드 조각에서 건너 뛴 작업을 수행합니다.

또한 특정 유형의 REST 작업 (예 : POST)의 경우 제출할 항목을 조립하는 데 도움이됩니다 (예 : 인코딩 된 양식 생성).

정의에 따라 Retrofit을 사용할 필요가 없습니다. Retrofit은 컴퓨터 프로그래머가 작성한 컴퓨터 코드입니다. 누군가 Retrofit이하는 일을하는 코드를 작성할 수 있습니다.

Retrofit이 OkHttp를 사용하는 이유

Retrofit은 HTTP 작업을 수행해야합니다. 가능한 경우 OkHttp가 제공하는 모든 것에 대해 OkHttp를 사용합니다 : HTTP / 2 및 SPDY 지원, 플러그 형 인터셉터 등.


32

애플리케이션 내에서 서버 API를 매핑하려는 경우 개조를 사용해야합니다 (유형 보호). Retrofit은 okHTTP를 통해 래핑 된 API 어댑터입니다.

API와 상호 작용 코드를 안전하게 입력하고 모듈화하려면 개조를 사용하십시오. 그 외에도 okHTTP 및 Retrofit의 기본 성능, 요청 기본값 등은 동일합니다.

또한 Jesse Wilson (주요 Android HTTP 클라이언트 개발자) 의이 팟 캐스트를 들어 볼 것을 권장합니다 . 여기에서 Apache HTTP 클라이언트, HTTPURLConnection, okHTTP 및 Retrofit의 개발 역사에 대해 깊이 이야기합니다.


23

Retrofit vs. OkHttp 이유는 간단합니다 . OkHttp는 낮은 수준의 네트워크 작업, 캐싱, 요청 및 응답 조작 등을 담당하는 순수한 HTTP / SPDY 클라이언트입니다. 대조적으로 Retrofit은 OkHttp를 기반으로하는 고수준 REST 추상화입니다. Retrofit 2는 OkHttp와 강력하게 결합되어이를 집중적으로 사용합니다.

OkHttp 기능 : 연결 풀링, gzipping, 캐싱, 네트워크 문제에서 복구, 동기화 및 비동기 호출, 리디렉션, 재시도 등.

개조 기능 : URL 조작, 요청,로드, 캐싱, 스레딩, 동기화 ... 동기화 및 비동기 호출이 가능합니다.


7

Retrofit은 Android 및 Java by Square 용 REST 클라이언트입니다. REST 기반 웹 서비스를 통해 비교적 쉽게 JSON (또는 기타 구조화 된 데이터)을 검색하고 업로드 할 수 있습니다. Retrofit에서 데이터 직렬화에 사용되는 변환기를 구성합니다. 일반적으로 JSON의 경우 GSon을 사용하지만 사용자 지정 변환기를 추가하여 XML 또는 기타 프로토콜을 처리 할 수 ​​있습니다. Retrofit은 HTTP 요청에 OkHttp 라이브러리를 사용합니다. 기능을 위해 okhttp보다 개조를 사용해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.