Java で REST クライアントを作成する

Jay Shaw 2024年2月15日
  1. Spring Boot を使用して Java Rest クライアントを作成する手順
  2. OkHttp を使用して Java REST クライアントを作成する
  3. まとめ
Java で REST クライアントを作成する

REST は、Web プログラムが多くの処理を必要とせずに相互に簡単にやり取りできるようにするために作成された一連のルールと規定です。

これらの Web プログラムが使用する REST サービスにアクセスするには、REST クライアントと呼ばれるクライアント側アプリケーションが必要です。

この記事では、REST クライアントを作成するためのさまざまなツールについて説明します。 最初の例は、Spring Boot と OkHttp を使用して単純な REST クライアントを作成する手順を示しています。

Spring Boot を使用して Java Rest クライアントを作成する手順

REST クライアントを作成するには、IDE が機能するフレームワークが必要です。 フレームワークは、すべての重要なライブラリ パッケージとランタイム関連のコンポーネントを含む環境です。

Spring Boot は、マイクロサービスの作成に使用されるオープンソースの Java フレームワークです。 Java と Spring Boot を使用して REST クライアントを作成するには、次のリソースが必要です。

  • Eclipse IDE または Spring ツール スイート
    ・JDK1.8以降
  • Maven 3.2+

以下のサブセクションでは、上記のすべてのツールを使用して、REST クライアントを段階的に作成します。

空のプロジェクトを作成する

最初のステップは、空のプロジェクトを作成することです。 これには 2つの方法があります。

  1. 空のプロジェクトを作成し、すべての依存関係を手動で追加します。

    • Spring Tool Suite を開き、File>New>Other>Web>Dynamic Web Project に移動し、Next をクリックします。
    • プロジェクト名を付け、ランタイム サーバーを選択し、ダイナミック Web のモジュール バージョンを選択して、[次へ] をクリックします。
    • 最後のセクションは、ライブラリ ツリーを示しています。 ファイル パス ツリー全体に対する変更は、ここで行うことができます。
  2. Spring Initializr を使用して、事前に初期化されたプロジェクトをフェッチします。

Spring Initializr は、プログラマーの依存関係の必要性に従って構成された事前に初期化されたプロジェクトをダウンロードし、https://start.spring.io/ から作成できます。

Java レスト クライアント

この Web サービスは、選択したすべての依存関係を含む Maven または Gradle プロジェクトを作成します。 [Generate] をクリックすると、ブラウザーは Web プロジェクトに必要なすべてのファイルとライブラリを含む .zip ファイルをダウンロードします。

ここで使用されるサンプル プロジェクトでは、REST API サービスを使用して URL から引用符を抽出し、クライアントが GET リクエストを送信すると結果を返します。

プロジェクトには org.clientforquotes という名前が付けられ、ここで必要な依存関係は 1つだけであるため、spring web のみが選択されます。

REST サービスの作成

REST サービスは、GETPOST などのコマンドを受け取り、応答を返します。

REST サービスを実行するアプリケーションを作成するには、Java クラスを作成し、名前を付けます。 この例では、クラスには mainapplication.java という名前が付けられ、src/main/java フォルダー内に作成されます。

このクラスには main メソッドが含まれています。 イニシャライザを使用して作成すると、このクラスはすでにそこに存在することがわかります。

このクラスには 3つの主要なコンポーネントがあります。

  1. 出力を表示するために、logger メソッドが追加されます。
  2. ドメインから受信したデータは、JSON ライブラリを介して処理されます。 RestTemplate メソッドを使用して行われます。
  3. アプリケーションは起動時に見積もりを抽出します。 このプロセスは、Rest テンプレートが CommandLineRunner を使用して実行されるときに発生します。

以下は、REST サービスを作成するためのソース コードです。 ファイルの名前は MainApplication.java です。

package com.example.clientforquotes;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class MainApplication {
  private static final Logger log = LoggerFactory.getLogger(MainApplication.class);

  public static void main(String[] args) {
    SpringApplication.run(MainApplication.class, args);
  }

  @Bean
  public RestTemplate restTemplate(RestTemplateBuilder builder) {
    return builder.build();
  }

  @Bean
  public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
    return args -> {
      Quote qt =
          restTemplate.getForObject("https://quoters.apps.pcfone.io/api/random", Quote.class);
      log.info(qt.toString());
    };
  }
}

ドメインからのデータを格納するクラスを作成する

他に 2つの .java ファイル (pullquote.javabasevalues.java) を作成して、getter-setter メソッド、コンストラクター、および To_String 関数を追加します。

pullquote クラスは、URL ドメインから取得した引用符付きの値を格納し、クラスが呼び出されたときにそれを表示します。 以下は、ファイル pullquote.java のソース コードです。

package com.example.clientforquotes;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Pullquote {
  private String object_type;
  private Basevalue qt_value;

  public Pullquote() {}

  public String getType() {
    return object_type;
  }

  public void setType(String type) {
    this.object_type = type;
  }

  public Basevalue getValue() {
    return qt_value;
  }

  public void setValue(Basevalue value) {
    this.qt_value = value;
  }

  @Override
  public String toString() {
    return "The quote for you = {"
        + "type='" + object_type + '\'' + ", value=" + qt_value + '}';
  }
}

また、ファイル basevalue.java にクラス Basevalue を作成して、内部引用符を保存します。

package com.example.clientforquotes;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Basevalue {
  private Long sr_no;
  private String qt;

  public Basevalue() {}

  public Long getId() {
    return this.sr_no;
  }

  public String getQuote() {
    return this.qt;
  }

  public void setId(Long id) {
    this.sr_no = id;
  }

  public void setQuote(String quote) {
    this.qt = quote;
  }

  @Override
  public String toString() {
    return "Value{"
        + "id=" + sr_no + ", quote='" + qt + '\'' + '}';
  }
}

新しい依存関係を pom.xml に追加する

すべての Web プロジェクトには、プロジェクトが必要とする依存関係を格納する pom.xml ファイルがあります。 新しいライブラリがプロジェクト内にインポートされた場合、その依存関係をその pom.xml に追加する必要があります。

以下は、私たちのプロジェクトの pom.xml ファイルです。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>client-for-quotes</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>client-for-quotes</name>
    <description>Project for fetching quotes</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

アプリケーションを実行する

アプリケーションを実行するには多くの方法があります。

  • Spring Boot アプリで直接実行します。
  • プロジェクトの実行可能な .jar ファイルを作成します。
  • コマンドラインから実行します。

上記の方法を使用して作成した REST クライアントを実行できます。 ここで、他のフレームワークを使用して Java REST クライアントを作成する方法について説明します。

OkHttp を使用して Java REST クライアントを作成する

これは、Java アプリケーション用の軽量で効率的なクライアントです。 それを使用する Web プログラムは、おそらくより高速にロードできます。

このプログラムは、リクエストが行われると、JSON 呼び出しをサービスに送信します。 URL は .url パラメータ内に記述され、リクエスト タイプは .post パラメータ内に記述されます。

.build() 関数は OkHttp リクエストを作成します。 以下は、OkHttp フレームワークを使用して Java REST クライアントを作成するためのソース コードです。

public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");

OkHttpClient obj = new OkHttpClient();

String post(String domain, String call) throws IOException {
  RequestBody req_body = RequestBody.create(JSON, call);
  Request quest = new Requests.Builder().url(domain).post(req_body).build();
  Response resp = obj.newCall(quest).execute();
  return resp.req_body().string();
}

まとめ

Java REST クライアントの作成について、詳細かつ簡単な方法で説明しました。 この記事を読み終えた読者は、Spring Boot や OkHttp などの一般的なフレームワークを使用して Java REST クライアントを作成できます。