1. ホーム
  2. java

[解決済み] OkHttpがあるのに、なぜRetrofitを使うのか?

2022-05-31 13:48:37

質問

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は、流暢なビルダーと不変性で設計されています。 immutabilityで設計されています。同期ブロック呼び出しとコールバックによる非同期呼び出しの両方をサポートしています。 コールバックによる非同期呼び出しの両方をサポートしています。

を読みました。 スタックオーバーフロー

<ブロッククオート

RetrofitはOkHTTPが利用可能な場合、自動的にOkHTTPを使用します。

.

そこで質問なのですが、Retrofitはいったい何のためにあるのでしょうか?

OkHttpにできなくて、Retrofitにできることは何ですか?

リクエストAPIの問題は、OkHttpとGsonが解決してくれると思います。 では、Retrofitはどんな問題を解決してくれるのでしょうか?

どのように解決するのか?

<ブロッククオート

OkHttpでHTTPリクエストを行い、サーバからレスポンスを取得します。そして、Gson libでレスポンスを必要なオブジェクトに変換します。

このコードでは、URLの生成とGsonを使用したJSONの実際のパースという2つの重要なステップを省略していることに注意してください。

そこで質問なのですが、Retrofitはいったい何のためにあるのでしょうか?

URLを生成し(特定のREST APIに結びついた型認識生成コードを使用)、Gsonを使用してJSONを実際にパースするためのものです。言い換えれば、このコード スニペットでスキップしたことを行うのです。

また、特定のタイプのREST操作(たとえば、POST)のために、送信するものを組み立てるのに少し役立ちます(たとえば、符号化されたフォームを生成します)。

定義上、Retrofitを使用する必要はありません。Retrofitはコンピュータプログラマによって書かれたコンピュータコードです。他の誰かが、Retrofit が行うことを行うコードを書くことができます。

なぜRetrofitはOkHttpを使うのか

RetrofitはHTTP操作を行う必要があります。そのため、OkHttpが提供するすべての機能を利用することができます。HTTP/2やSPDYのサポート、プラグイン可能なインターセプターなどです。