RestTemplate位置spring-web
モジュールは、org.springframework.web.client
パッケージの下、春の同期クライアントのHTTPアクセスのコアクラスは、それが簡素化し、インタラクティブなHTTPサーバ側のためにRESTfulな原理の使用を強制します。これは、HTTP接続、別のURLを提供するために、アプリケーションコード(いくつかのテンプレート変数がかかる場合があります)と、抽出結果を処理します。
注:デフォルトでは、RestTempleteは、HTTP接続を確立するために、標準のJDKツールに依存している、あなたはできるsetRequestFactory
ようにApacheのHttpComponent、ネッティーとOkHttpとして、彼を置き換えるために異なるHTTPライブラリを使用する属性。
さらに、exchange
およびexecute
方法上記のプロセスの一般的なバージョンはそれほど頻繁に組み合わせて使用される追加サポートするために使用することができるされている(例:PUTを運ぶHTTP乾上がる、HTTPレスポンスボディ)が、ベースのHTTPライブラリが使用されることに留意されたいは、必要をサポートしなければなりません組み合わせ。
各HTTPメソッドは3種類あります。第三URIを受信URIとURIの変数(配列、および変数)の2つの受信テンプレート文字列を、URIテンプレートに対して、嘉定をエンコードする必要があり、それを注意してください。例えば: restTemplate.getForObject("https://example.com/hotel list")
なりhttps://example.com/hotel%20list
URIまたはURIテンプレート変数が符号化されている場合は、デュアルコーディングが例えば起こるであろうことを、この手段も: https://example.com/hotel%20list
となっhttps://example.com/hotel%2520list
使い、これを回避するためにURI
コード化する前に(または再利用)メソッドが提供するバリアントURI。URIをコードの完全な制御のために準備するために、使用することを検討してくださいorg.springframework.web.util.UriComponentsBuilder
。
内部テンプレートでHttpMessageConverter
インスタンスのHTTPメッセージを前後にPOJOの間。デフォルトでは、でsetMessageConverters
、コンバータの主要なMIMEタイプを登録していますが、他のコンバータにサインアップすることができます。
テンプレートの使用org.springframework.http.client.SimpleClientHttpRequestFactory
とDefaultResponseErrorHandler
別のHTTP接続として、あるいは、デフォルトのHTTPエラーハンドリング戦略を作成します。それは、それぞれ可能setRequestFactory
とsetErrorHandler
これらのデフォルトを上書きします。
デモ
Mavenは導入依存しています
< プロパティ> <! - JDK版本- > < のjava.version > 1.8 </ のjava.version > </ プロパティ> < 依存性> < 依存> < groupIdを> org.springframework.boot </ groupIdを> < たartifactId >春-bootスタータウェブ</ たartifactId > < バージョン> 1.5.22.RELEASE </ バージョン> </ 依存> <依存> < のgroupId > org.springframework.boot </ のgroupId > < たartifactId >ばねブートスタータ試験</ たartifactId > < バージョン> 1.5.22.RELEASE </ バージョン> < スコープ>テスト</ スコープ> </ 依存関係> </ 依存関係>
メッセージEntityクラスを作成します。
パブリック クラスMsgBean { プライベート int型のID。 プライベート文字列名; 公共 INT のgetId(){ 戻りID。 } 公共 ボイド SETID(int型のID){ この .ID = ID。 } パブリック文字列のgetName(){ 戻り名。 } 公共 ボイドのsetName(文字列名){ この .nameの= 名前。 } @Override パブリック文字列のtoString(){ リターン "MsgBean {" + "ID =" + ID + "NAME = '" +名+ '\'' + '}' ; } }
マスタークラスの実行SpringBootを作成します。
@SpringBootApplication パブリック クラスDemoApplication { 公共 静的 ボイドメイン(文字列[]引数){ SpringApplication.run(DemoApplication。クラス、引数)。 } }
RestTemplateコンフィギュレーションクラスの作成、ターゲット取得TestTemplate
@Configuration パブリック クラスRestTemplateConfig { @Bean 公共RestTemplate restTemplate(ClientHttpRequestFactory工場){ 戻り 新しいRestTemplate(工場)。 } @Bean 公共ClientHttpRequestFactory simpleClientHttpRequestFactory(){ SimpleClientHttpRequestFactory工場 = 新しいSimpleClientHttpRequestFactory()。 factory.setReadTimeout( 5000); // 5秒 factory.setConnectTimeout(15000); // 15秒 戻り工場。 } }
、サービスクラスがServerControllerと呼ばれる作成したマイクロサービス、安らかなAPI呼び出しをシミュレートします
/ ** * 2019年9月24日にfubinによって作成されます。 *被调用的コントローラ * / @RestController (@RequestMapping "サーバ" ) パブリック クラスServerController { (@GetMapping "/ GET" ) パブリックMsgBeanのget(){ MsgBean msgBean = 新しいMsgBean()。 msgBean.setId( 1 )。 msgBean.setName( "MSG1" ); 返すmsgBeanを。 } @PostMapping( "/ポスト" ) 公衆MsgBeanポスト(){ MsgBean msgBean = 新しい MsgBean()。 msgBean.setId( 1); msgBean.setName( "MSG1" ); 返すmsgBeanを。 } / ** *ポスト方法传值 * @paramのID * @paramの名 * @return * / @PostMapping( "/ postParam" ) 公共の文字列postParam(@RequestParam( "ID")文字列ID、@RequestParam( "名前" )文字列名){ するSystem.out.println( "郵便番号:" + ID)。 System.out.println( "ポスト名:" + 名)。 リターン「ポストSUCC」。 ID * @paramの名 * @return * / @PutMapping( "/ PUT" ) のパブリック文字列PUT(@RequestParam( "ID")文字列ID、@ RequestParam( "名前" )文字列名){ System.out.printlnは(「PUT ID: "+ ID); System.out.println( "PUT名:" + 名)。 戻る「デルSUCC」。 } / ** *デル方法传值 * @paramのID * @return * / @DeleteMapping( "/デル" ) パブリック文字列デル(@RequestParam( "ID" )文字列ID){ のSystem.out。"デルID:" +ID)。 戻る「デルSUCC」。 } }
ServerControllerサービスRestRemplateを呼び出すことにより、サービスコールクラスInvokeControllerを作成します。