Java Spring Bootで別のサーバーにAPIリクエストを送信する方法


  1. RestTemplateを使用する方法: Spring Bootでは、RestTemplateクラスを使用してHTTPリクエストを送信できます。以下の例では、RestTemplateを使用してGETリクエストを送信しています。
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
public class ApiClient {
    public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();
        String url = "http://別のサーバーのURL";
        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
        System.out.println(response.getBody());
    }
}
  1. WebClientを使用する方法: Spring WebFluxモジュールを使用して非同期のHTTPリクエストを送信する場合は、WebClientを使用することができます。以下の例では、WebClientを使用してPOSTリクエストを送信しています。
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.client.WebClient;
public class ApiClient {
    public static void main(String[] args) {
        WebClient client = WebClient.create();
        String url = "http://別のサーバーのURL";
        String requestBody = "{\"key\":\"value\"}";
        client.post()
                .uri(url)
                .contentType(MediaType.APPLICATION_JSON)
                .body(BodyInserters.fromValue(requestBody))
                .retrieve()
                .bodyToMono(String.class)
                .subscribe(response -> System.out.println(response));
    }
}
  1. Apache HttpClientを使用する方法: Apache HttpClientは、Apacheのライブラリであり、Spring Bootアプリケーションで使用することもできます。以下の例は、Apache HttpClientを使用してGETリクエストを送信する方法を示しています。
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ApiClient {
    public static void main(String[] args) throws IOException {
        HttpClient client = HttpClientBuilder.create().build();
        String url = "http://別のサーバーのURL";
        HttpGet request = new HttpGet(url);
        HttpResponse response = client.execute(request);
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
    }
}

これらは一部の一般的な方法ですが、Spring Bootでは他にも多くの方法があります。選択した方法は、アプリケーションの要件や好みに基づいて選択できます。