Spring Boot API連携

Spring BootのAPI通信でタイムアウト時間を設定してみた

Spring BootのAPI通信でRestTemplateクラスを利用するが、その際に、接続タイムアウト時間と読み取りタイムアウト時間を設定することができる。今回は、以前作成したAPI通信のプログラムにタイムアウト時間を設定してみたので、共有する。

なお、接続タイムアウト時間・読み取りタイムアウト時間については、以下のサイトを参照のこと。
https://hacknote.jp/archives/25508/

前提条件

下記記事の実装が完了していること。

API通信をAESで暗号化してみた今回は、以前作成したREST API通信のプログラムを、共通鍵暗号方式の1つであるAES(Advanced Encryption Sta...

サンプルプログラム(クライアント側)の作成

作成したサンプルプログラム(クライアント側)の構成は以下の通り。
サンプルプログラムの構成(クライアント側)
なお、上記の赤枠は、前提条件のプログラムから追加/変更したプログラムである。

application.ymlの内容は以下の通りで、接続タイムアウト(秒)、読み取りタイムアウト(秒)の設定を追加している。

また、RestTemplateクラスを定義しているConfigBeanクラスの内容は以下の通りで、接続タイムアウト(秒)、読み取りタイムアウト(秒)を設定した後でRestTemplateクラスを生成している。



さらに、Controllerクラスの内容は以下の通りで、タイムアウトの設定とは特に関係ないが、ユーザーデータリストをAPIで取得する際にPOST通信を利用するよう修正している。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-api-timeout/demo



サンプルプログラム(サーバー側)の作成

作成したサンプルプログラム(サーバー側)の構成は以下の通り。
サンプルプログラムの構成(サーバー側)
なお、上記の赤枠は、前提条件のプログラムから追加/変更したプログラムである。

コントローラクラスの内容は以下の通りで、getUserDataListメソッドのアノテーションを@PostMappingアノテーションにすると共に、UserDataテーブルのリストを返却するよう修正している。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-api-timeout/demo_server

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の記事の「http:// (ホスト名):8084」とアクセスした場合と同じ実行結果となる。

API通信をAESで暗号化してみた今回は、以前作成したREST API通信のプログラムを、共通鍵暗号方式の1つであるAES(Advanced Encryption Sta...

要点まとめ

  • RestTemplateクラスを生成してAPI通信を行う際に、接続タイムアウト時間(秒)と読み取りタイムアウト時間(秒)を設定することができる。