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を呼び出す方法でした。