0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RestTemplateでAPIの呼び出し

Posted at

Spring BootでRestTemplateを使用してリクエストを送信して、レスポンスを取得する方法を以下に示します。

サンプルコード

package exsample;

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.HttpServerErrorException;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;

public class PutApiExample {

  public static void main(String[] args) {
    // RestTemplateのインスタンスを作成
    RestTemplate restTemplate = new RestTemplate();

    // PUTリクエストのURL
    String url = "http://localhost:8080/api/puts"; // 実際のAPIエンドポイントに置き換えてください

    // リクエストボディを作成
    OrderRequest requestDto = new OrderRequest();
    requestDto.setOrderId("0123456");

    // ヘッダーを設定(必要に応じて)
    HttpHeaders headers = new HttpHeaders();
    headers.set("Content-Type", "application/json");

    // HttpEntityにリクエストボディとヘッダーを設定
    HttpEntity<OrderRequest> requestEntity = new HttpEntity<>(requestDto,headers);

    try {
      // PUTリクエストを送信し、レスポンスを受け取る
      ResponseEntity<OrderResponse> responseEntity = restTemplate
          .exchange(url, HttpMethod.PUT, requestEntity, OrderResponse.class);

      // レスポンスを取得
      OrderResponse responseDto = responseEntity.getBody();

      // レスポンスを出力
      if (responseDto != null) {
        System.out.println("OrderId: " + responseDto.getOrderId());
        System.out.println("ResultCd: " + responseDto.getResultCd());
        System.out.println("ErrorMessage: " + responseDto.getErrorMessage());
      } else {
        System.out.println("レスポンスが空です");
      }
    } catch (HttpClientErrorException e) {
      // HTTPステータスコードが4xxの場合の処理
      System.out.println("HTTPステータスコード: " + e.getStatusCode());
      System.out.println("エラーレスポンス: " + e.getResponseBodyAsString());
    } catch (HttpServerErrorException e) {
      // HTTPステータスコードが5xxの場合の処理
      System.out.println("HTTPステータスコード: " + e.getStatusCode());
      System.out.println("エラーレスポンス: " + e.getResponseBodyAsString());
    } catch (Exception e) {
      // その他の例外処理
      System.out.println("エラーが発生しました: " + e.getMessage());
    }
  }
}

説明

  • Response
    RestTemplateのexchange()のリターン値を取得できます。

  • HttpClientErrorExceptionのキャッチ

RestTemplateは、HTTPステータスコードが4xxや5xxの場合にHttpClientErrorExceptionやHttpServerErrorExceptionをスローします。
HttpClientErrorExceptionをキャッチすることで、400エラーのレスポンスを取得できます。

  • HttpServerErrorExceptionのキャッチ

RestTemplateは、HTTPステータスコードが5xxの場合にHttpServerErrorExceptionをスローします。
この例外をキャッチすることで、500エラーのレスポンスを取得できます。

  • エラーレスポンスの取得

e.getResponseBodyAsString()を使用して、エラーレスポンスのボディを文字列として取得します。
必要に応じて、JSON文字列をパースしてオブジェクトに変換することもできます。

  • その他の例外処理

ネットワークエラーやその他の例外が発生する可能性あるため、Exceptionをキャッチして適切に処理します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?