私はSpringブートを使用してREST APIに取り組んでおり、アプリケーションのエンドポイントにアクセスする必要がありました。 RestTemplate
を使用しました。私は2つの方法を使用してそれを行うことができました、
postForEntity()
:
_responseEntity =
restTemplate.postForEntity(uri, httpEntity, ResponseClass.class);
_
exchange()
:
_responseEntity =
restTemplate.exchange(uri, HttpMethod.POST, httpEntity, ResponseClass.class);
_
これら2つの方法の使用法と違いを知りたいです。
また、別のメソッドexecute()
も表示されます。少し光を当ててください。いつどのように使用するか。
RestTemplate
は、HTTP要求を実行するsynchronousクライアントです。頻度の低いケースをサポートする一般化されたexchange(...)
およびexecute(...)
メソッドに加えて、各HTTPメソッドの一般的なシナリオのテンプレートを提供します。
Spring Integration documentation は、各メソッドの使用法をまとめたものです:
postForEntity
POST
を介して新しいリソースを作成し、応答から表現を返します。
exchange
必要に応じて柔軟性を高める上記のメソッドのより一般化された、あまり意見のないバージョン。 HTTPメソッド、URL、ヘッダー、本文を含む
RequestEntity
を入力として受け入れ、ResponseEntity
を返します。これらのメソッドでは、
ParameterizedTypeReference
の代わりにClass
を使用して、ジェネリックで応答タイプを指定できます。
execute
コールバックインターフェイスを介した要求の準備と応答の抽出を完全に制御して、要求を実行する最も一般的な方法。
最後に、postForEntity(...)
、exchange(...)
、およびexecute(...)
の両方のメソッドは、保護された doExecute(...)
メソッドを呼び出します。実際のHTTPリクエストを実行します。詳細については、 ソースコード を確認してください。
PostForEntityメソッドとexchangeメソッドの両方の実装を見ると、両方が背後でexecuteメソッドを使用していることがわかります。 exchangeメソッドを使用すると、さまざまなhttpメソッドをより自由に呼び出すことができます。