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つの方法があります。
-
空のプロジェクトを作成し、すべての依存関係を手動で追加します。
- Spring Tool Suite を開き、
File>New>Other>Web>Dynamic Web Project
に移動し、Next をクリックします。 - プロジェクト名を付け、ランタイム サーバーを選択し、ダイナミック Web のモジュール バージョンを選択して、[次へ] をクリックします。
- 最後のセクションは、ライブラリ ツリーを示しています。 ファイル パス ツリー全体に対する変更は、ここで行うことができます。
- Spring Tool Suite を開き、
-
Spring Initializr を使用して、事前に初期化されたプロジェクトをフェッチします。
Spring Initializr は、プログラマーの依存関係の必要性に従って構成された事前に初期化されたプロジェクトをダウンロードし、https://start.spring.io/
から作成できます。
この Web サービスは、選択したすべての依存関係を含む Maven または Gradle プロジェクトを作成します。 [Generate] をクリックすると、ブラウザーは Web プロジェクトに必要なすべてのファイルとライブラリを含む .zip
ファイルをダウンロードします。
ここで使用されるサンプル プロジェクトでは、REST API サービスを使用して URL から引用符を抽出し、クライアントが GET
リクエストを送信すると結果を返します。
プロジェクトには org.clientforquotes
という名前が付けられ、ここで必要な依存関係は 1つだけであるため、spring web
のみが選択されます。
REST サービスの作成
REST サービスは、GET
や POST
などのコマンドを受け取り、応答を返します。
REST サービスを実行するアプリケーションを作成するには、Java クラスを作成し、名前を付けます。 この例では、クラスには mainapplication.java
という名前が付けられ、src/main/java
フォルダー内に作成されます。
このクラスには main
メソッドが含まれています。 イニシャライザを使用して作成すると、このクラスはすでにそこに存在することがわかります。
このクラスには 3つの主要なコンポーネントがあります。
- 出力を表示するために、
logger
メソッドが追加されます。 - ドメインから受信したデータは、JSON ライブラリを介して処理されます。
RestTemplate
メソッドを使用して行われます。 - アプリケーションは起動時に見積もりを抽出します。 このプロセスは、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.java
と basevalues.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 クライアントを作成できます。