ホームページ >バックエンド開発 >PHPチュートリアル >Java バックエンド開発: Retrofit を使用した API 呼び出し

Java バックエンド開発: Retrofit を使用した API 呼び出し

PHPz
PHPzオリジナル
2023-06-17 09:50:451821ブラウズ

Java バックエンド開発: API 呼び出しに Retrofit を使用する

インターネット テクノロジーの急速な発展に伴い、API はアプリケーションとサービス間の通信のための標準プロトコルとなり、さまざまなシナリオで広く使用されています。モバイルアプリケーションやウェブサイトの開発など。 Java バックエンド開発の分野では、Retrofit は現在、API 呼び出しを実装するための非常に人気のあるフレームワークです。この記事では、Retrofit とは何か、および Retrofit を使用して API 呼び出しを行う方法を紹介します。

1. Retrofit とは

Retrofit は、サーバー側 API 呼び出しを実装する Java ベースのフレームワークであり、アノテーションを使用して HTTP リクエスト、パラメーター、応答本体を記述し、Java インターフェイスを使用してサーバー側の API 呼び出しを実装します。 OkHttp を基盤となるネットワーク リクエスト ライブラリとして使用し、同期および非同期のネットワーク リクエスト メソッドをサポートし、リクエストの再試行、リクエストのキャッシュ、ファイルのアップロードなどの多数の補助機能を提供します。 Retrofit は、Gson、Jackson、Moshi などのさまざまなデータ コンバータもサポートしており、リクエストおよびレスポンスの本文を Java オブジェクトに簡単に変換できます。

2. Retrofit を使用して API 呼び出しを行う方法

1. 依存関係のインポート

Retrofit を使用して API 呼び出しを行うには、まず関連する依存関係をプロジェクトに追加する必要があります。 Maven プロジェクトでは、pom.xml ファイルに次の依存関係を追加できます。

<dependency>
  <groupId>com.squareup.retrofit2</groupId>
  <artifactId>retrofit</artifactId>
  <version>2.9.0</version>
</dependency>
<dependency>
  <groupId>com.squareup.retrofit2</groupId>
  <artifactId>converter-gson</artifactId>
  <version>2.9.0</version>
</dependency>

このうち、retrofit は Retrofit フレームワーク自体の依存関係であり、converter-gson は Retrofit の Gson データ コンバーターの依存関係です。 。

2. API インターフェースの作成

Retrofit を使用して API 呼び出しを行う場合は、最初に対応する API インターフェースを作成する必要があります。インターフェースには、URL、リクエストメソッド、リクエストパラメータ、戻り値のデータ型などのサーバーAPIの情報が記述されます。たとえば、次のコードは、GET リクエストをサーバーに送信し、文字列を返すための基本的なインターフェイスを定義します。

public interface ApiService {
    @GET("/api/hello")
    Call<String> getHello();
}

このインターフェイスでは、Retrofit によって提供される @GET アノテーションを使用して、HTTP リクエストのタイプと URL を記述します。アドレスの場合は、Call8742468051c85b06f0a0af9e3e506b5c を使用して返されるデータ型を記述します。ここで、T には文字列、カスタム オブジェクトなどの任意の Java 型を指定できます。

3. Retrofit オブジェクトの作成

インターフェースを定義した後、Retrofit を使用して対応するサービス インスタンスを作成する必要があります。 Retrofit オブジェクトを作成するときは、リクエスト URL、データ コンバータ、ネットワーク リクエスト ライブラリ、およびその他の関連プロパティを指定できます。たとえば、次のコードは Retrofit インスタンスを作成し、リクエスト URL、Gson データ コンバータ、および OkHttp ネットワーク リクエスト ライブラリを指定します。

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("http://localhost:8080")
    .addConverterFactory(GsonConverterFactory.create())
    .client(new OkHttpClient.Builder().build())
    .build();

このうち、baseUrl はサーバーのベース URL アドレスを指定し、addConverterFactory はデータを指定します。変換 コンバータは GsonConverter で、クライアントは基礎となるネットワーク リクエスト ライブラリとして OkHttp の使用を指定します。ここでは OkHttpClient のデフォルト設定が使用されていますが、接続タイムアウト、読み取りおよび書き込みタイムアウトなどの関連パラメータを自分で設定することもできます。

4. API インスタンスの作成

Retrofit は、ダイナミック プロキシを介して API インターフェイスの実装クラスを作成し、API 呼び出しを非常に簡単にします。たとえば、次のコードは API インスタンスを作成し、getHello メソッドを呼び出します。

ApiService apiService = retrofit.create(ApiService.class);
Call<String> call = apiService.getHello();
Response<String> response = call.execute();
System.out.println(response.body());

このコードでは、ApiService 実装クラスが Retrofit.create メソッドを通じて動的に生成され、getHello メソッドを使用してオブジェクトを呼び出し、最後に Call の実行メソッドを呼び出してリクエストを同期的に実行します。 execute メソッドは、サーバーから返されたすべての情報を含む Response オブジェクトを返します。このオブジェクトの body 属性は、サーバーから返されたデータです。

リクエストを非同期で実行したい場合は、Call の enqueue メソッドを使用できます。例:

ApiService apiService = retrofit.create(ApiService.class);
Call<String> call = apiService.getHello();
call.enqueue(new Callback<String>() {
  @Override
  public void onResponse(Call<String> call, Response<String> response) {
    System.out.println(response.body());
  }
  
  @Override
  public void onFailure(Call<String> call, Throwable t) {
    t.printStackTrace();
  }
});

このコードでは、Call の enqueue メソッドを使用してリクエストを非同期に実行し、Callback インターフェイスを実装してリクエストの結果を処理します。リクエストが成功すると onResponse メソッドが呼び出され、リクエストが失敗すると onFailure メソッドが呼び出されます。

3. 概要

この記事では、API インターフェイスの作成、Retrofit インスタンスの作成、API インスタンスの作成、ネットワーク リクエストの実行のプロセスなど、Retrofit の基本的な使用法を紹介します。 Retrofit は、アノテーションを使用して API 呼び出しを簡素化し、フロントエンドとバックエンドがデータをやり取りするのを非常に便利にします。 Retrofit はスレッド セーフではなく、マルチスレッド環境では適切な同期が必要なため、Retrofit を使用する場合はスレッド セーフの問題に注意する必要があります。

以上がJava バックエンド開発: Retrofit を使用した API 呼び出しの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。