Springフレームspring-webモジュールにおけるRestit Template類の詳細
Restit Template類は、spring-webモジュールでHTTPアクセスを行うRESTクライアントコアクラスです。Restit Template要求は、ブロックIOを使用して、低合併のアプリケーションシーンに適しています。
1.RertTemplate類は3つのコンストラクションを提供しています。 Rest Template() RestTemplate org.spring frame ework.http.client.HttpRequest Factoryインターフェースの実現クラスは、下の階層で実現される第三者HTTPクライアントソフトウェアを提供します。 Rest Template(java.util.List)message Coverters) org.springframe ework.http.com nverter.Http Message Coverterインターフェースの実現対象は、HTTPメッセージとJava POJOの間でデータ変換が可能です。
2. Restit Template類は、GET、POST、PUT、DELETE、HEAD、OPTNSなどの多くのHTTPの方法で、サーバにHTTP要求を開始することができます。
2.1 GET要求の方法 get ForObject(String,ResonseClass,Object[]) get ForObject(String,ResonseClass,Map) get ForObject(URI、ResonseClass); 2.2 PUT要求の方法: put(String,Request Class,Object[]) put(String,Request Class,Map) put(URI、Request Class); 2.3 POST要求の方法: postForObject(String,Request Class,ResonseClass,Object[]) postForObject(String,Request Class,ResonseClass,Map) postForObject(URI、Request Class、ReonponseClass); 3.最新のSpring Framewark 5.0.7.RELEASEでは、spring-webモジュールの下に採用された第三者HTTPクライアントソフトウェアが3.1 Javaを実現します。 HttpURLConnect(デフォルトのRestit TemplateはHTTP 2に対応していません。)
SimpleClient HttpRequest Factory
3.2 Net ty 4.1.25.Final
Netty 4 Client HttpRequest Factoryはもう古いです。ReactoClient HttpConnectorに取って代わられます。
3.3 OkHttp 3.10.0
OkHttp 3 Client HttpRequest Factory
3.4 Appche Http Components(HTTP 2は対応していません) HttpClient 4.5.5 Http Components Client HttpRequest Factory HttpAsyncCient 4.1.3 Http Components Aync Client HttpRequest Factoryはもう古いです。
4.例
4.1デフォルトのクライアントを使用してRestTemplateオブジェクトを構築する
spring-webfluxモジュールでは、応答式RESTは、RestTemplateの代わりにクライアントWebClientを要求する。
org.springframe ewark.web.reactive.function.client.WebClientインターフェイスは非閉塞式IOを使用して、非同期呼出をサポートして、高合併、流式処理シーンに適しています。
このspring-webfluexモジュールでは、WebClientデフォルトの実装org.springframe ebork.web.reactive.function.client.Default WebClintクラスを提供しています。後で詳しく紹介します。
参照リンク:
https://github.com/spring-projects/spring-framework/blob/v5.0.7.RELEASE/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java
https://docs.spring.io/spring/docs/5.0.x/javadoc-api/org/springframework/web/client/RestTemplate.html
1.RertTemplate類は3つのコンストラクションを提供しています。
2. Restit Template類は、GET、POST、PUT、DELETE、HEAD、OPTNSなどの多くのHTTPの方法で、サーバにHTTP要求を開始することができます。
2.1 GET要求の方法
SimpleClient HttpRequest Factory
3.2 Net ty 4.1.25.Final
Netty 4 Client HttpRequest Factoryはもう古いです。ReactoClient HttpConnectorに取って代わられます。
3.3 OkHttp 3.10.0
OkHttp 3 Client HttpRequest Factory
3.4 Appche Http Components(HTTP 2は対応していません)
4.例
4.1デフォルトのクライアントを使用してRestTemplateオブジェクトを構築する
RestTemplate restTemplate = new RestTemplate();
に等しいRestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory());
に等しいRestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new SimpleClientHttpRequestFactory());
4.2 OkHttp 3を使ってRestTemplateオブジェクトを構築するRestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory());
4.3 RestTemplateBuiderを使ってパラメータ化されたRestTemplateオブジェクトを構築します。RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
restTemplateBuilder.build();
4.4 OkHttp 3 Clientを使ってHTTPS要求を送ります。SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
SSLSocketFactory ssf = sslContext.getSocketFactory();
OkHttpClient httpClient = new OkHttpClient.Builder()
.sslSocketFactory(ssf, (X509TrustManager) trustAllCerts[0])
.hostnameVerifier(verifieredAllHost)
.build();
OkHttp3ClientHttpRequestFactory requestFactory =
new OkHttp3ClientHttpRequestFactory(httpClient);
RestTemplate template = new RestTemplate(requestFactory);
5.Rets Templateに代わる応答式クライアントWebClientspring-webfluxモジュールでは、応答式RESTは、RestTemplateの代わりにクライアントWebClientを要求する。
org.springframe ewark.web.reactive.function.client.WebClientインターフェイスは非閉塞式IOを使用して、非同期呼出をサポートして、高合併、流式処理シーンに適しています。
このspring-webfluexモジュールでは、WebClientデフォルトの実装org.springframe ebork.web.reactive.function.client.Default WebClintクラスを提供しています。後で詳しく紹介します。
参照リンク:
https://github.com/spring-projects/spring-framework/blob/v5.0.7.RELEASE/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java
https://docs.spring.io/spring/docs/5.0.x/javadoc-api/org/springframework/web/client/RestTemplate.html