Spring BootでRestTemplate
を使ってAPIを呼び出す方法をメモしておきます。RestTemplate
を使うと、簡単にAPIを呼び出せます。
環境
今回呼び出すAPI
今回は、GET
でリクエストするたびにランダムにSpring Bootの名言(?)をレスポンスとして返してくれるhttps://gturnquist-quoters.cfapps.io/api/randomを呼び出します。このAPIは、以下のようなレスポンスを返してくれます。
RestTemplate
の使い方
依存性を追加する
まずは、build.gradle
の依存性に以下を追加します。
レスポンスの型を定義する
続いて、レスポンスの型を定義したクラスを作成します。このクラスを作成することで、RestTemplate
がレスポンス結果を各フィールドにセットしてくれます。
Quote.java
Value.java
RestTemplate
を使ってAPIを呼び出す
あとは、以下のようにAPIを呼び出すクラス内でRestTemplate
を使ってAPIを呼び出すだけです。簡単ですね。
今回は、GET
でリクエスト(引数もなし)しましたが、RestTemplate
では他にもPOST
やPUT
、DELETE
メソッドが使えたり、リクエストヘッダやリクエストボディ、クエリパラメータを設定することもできます。
おまけ: RestTemplate
をBean登録する
上記では、RestTemplate
を使うクラスで直接RestTemplate
をインジェクションしましたが、以下のようにRestTemplate
をBean登録して使うこともできます。
直接インジェクションする方法だと、そのクラスが呼ばれるたびにRestTemplate
インスタンスを生成してしまいますが、Bean登録する方法だと、Spring Boot起動時に1回だけしかRestTemplate
インスタンスは生成されません。インスタンスを複数作成することを嫌う場合、Bean登録する方法がおすすめです。
まとめ
Spring BootでRestTemplate
を使ってAPIを呼び出す方法でした。