Spring Bootシリーズ(一)Rest Template

12631 ワード

springBootのオープニングシリーズとして、Restit Templateはただの意外性しか表していません.
what
Restit Templateはspringが提供するrestサービスにアクセスするためのクライアントです.黙認はjava.netパッケージに基づいて実現されており、接続プールの概念がなく、ApacheのHttpClientを設置することも可能です.Restit Templateの機能と似ているのはFeignですが、Feignは個人的にはパッケージのために実装されているような感じがします.ちょっと余分です.
 
Why
サポートする常用http方法
方法
作用
Rest Template
GET
指定されたページ情報を要求し、エンティティ本体に戻る.
get ForObject(String,Class,String...)
HEAD
ページのヘッダのみを要求します.
headForHeaders(String,String...)
POST
要求サーバは、識別されたURIに対する新たな従属エンティティとして指定された文書を承認する.
postForLocation(String,Object,String...)
PUT
指定された文書の内容をクライアントからサーバに転送するデータに置き換えます.
put(String,Object,String...)
DELETE
サーバに指定したページの削除を要求します.
delete(String,String...)
OPTION
クライアントがサーバの性能を確認することを許可します.
options ForAllow(String,String...)
 
特性
スレッドの安全
カスタムコールバック操作
ドメインのエンティティをサポートして、直接jsonをjavabeanに変えることができます.
URIテンプレート対応
 
How
Mavenの配置
 
xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0modelVersion>

 

    <groupId>org.springframeworkgroupId>

    <artifactId>gs-consuming-restartifactId>

    <version>0.1.0version>

 

    <parent>

        <groupId>org.springframework.bootgroupId>

        <artifactId>spring-boot-starter-parentartifactId>

        <version>1.5.2.RELEASEversion>

    parent>

 

    <properties>

        <java.version>1.8java.version>

    properties>

 

    <dependencies>

        <dependency>

            <groupId>org.springframework.bootgroupId>

            <artifactId>spring-boot-starterartifactId>

        dependency>

        <dependency>

            <groupId>org.springframeworkgroupId>

            <artifactId>spring-webartifactId>

        dependency>

        <dependency>

            <groupId>com.fasterxml.jackson.coregroupId>

            <artifactId>jackson-databindartifactId>

        dependency>

    dependencies>

 

 

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.bootgroupId>

                <artifactId>spring-boot-maven-pluginartifactId>

            plugin>

        plugins>

    build>

 

project>
 
テストコード
 
一般的なjava呼び出しスタイル
RestTemplate restTemplate = new RestTemplate();



SimpleClientHttpRequestFactory requestFactory = (SimpleClientHttpRequestFactory) restTemplate.getRequestFactory();
//      

requestFactory.setReadTimeout(6000);

requestFactory.setConnectTimeout(6000);

restTemplate.setRequestFactory(requestFactory);



try{

    String res = restTemplate.getForObject("http://gturnquist-quoters.cfapps.io/api/random",String.class);

    System.out.println("res ="+ res);

}catch (RestClientException e){

    e.printStackTrace();

}
 
Spring呼び出しスタイル
 
Restit Templateの例を生成して、spring容器に自動的に追加します.
@Configuration

public class RestTemplateTest {



    @Bean

    public RestTemplate getRestTemplate(){

        RestTemplate restTemplate = new RestTemplate();



        SimpleClientHttpRequestFactory requestFactory = (SimpleClientHttpRequestFactory) restTemplate.getRequestFactory();
        //      

        requestFactory.setReadTimeout(6000);

        requestFactory.setConnectTimeout(6000);

        restTemplate.setRequestFactory(requestFactory);

        return restTemplate;

    }

}
 

//         RestTemplate  

@Autowired

RestTemplate restTemplate;
try{
    String res = restTemplate.getForObject("http://gturnquist-quoters.cfapps.io/api/random",String.class);
    System.out.println("res ="+ res);
}catch (RestClientException e){
    e.printStackTrace();
}
 
uriテンプレート
パラメータのみを置き換えることができ、uri構造を変えません.
String result = restTemplate.getForObject("http://example.com/hotels/{hotel}/bookings/{booking}", String.class, "42", "21");
Map
vars = new HashMap(); vars.put("hotel", "42"); vars.put("booking", "21"); String result = restTemplate.getForObject("http://example.com/hotels/{hotel}/bookings/{booking}", String.class, vars);
 
参考資料
//Spring公式サイトのRestTemplateの紹介
https://spring.io/blog/2009/03/27/rest-in-spring-3-resttemplate/
 
//spring公式サイトのRestTemplate利用ガイド
https://spring.io/guides/gs/consuming-rest/
 
//今のところRestit Templateで紹介されているブログのはずです.
http://liuxing.info/2015/05/21/RestTemplate%E5%AE%9E%E8%B7%B5/
 
転載先:https://www.cnblogs.com/ulysses-you/p/6890892.html