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

PHPz
リリース: 2023-06-17 09:54:01
オリジナル
1790 人が閲覧しました

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 を記述します。アドレスの場合は、Call を使用して返されるデータ型を記述します。ここで、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート