HTTP ヘッダーマッピング
Spring Integration は、HTTP リクエストと HTTP レスポンスの両方の HTTP ヘッダーマッピングのサポートを提供します。
デフォルトでは、すべての標準 HTTP ヘッダー [Wikipedia] (英語) がメッセージから HTTP リクエストまたはレスポンスヘッダーにマップされ、追加の構成は必要ありません。ただし、さらにカスタマイズが必要な場合は、名前空間のサポートを利用して追加の構成を提供できます。ヘッダー名のカンマ区切りのリストを指定でき、ワイルドカードとして機能する "*" 文字を使用した単純なパターンを含めることができます。このような値を指定すると、デフォルトの動作がオーバーライドされます。基本的に、その時点で完全に制御されていることを前提としています。ただし、すべての標準 HTTP ヘッダーを含めたい場合は、ショートカットパターン HTTP_REQUEST_HEADERS
および HTTP_RESPONSE_HEADERS
を使用できます。次のリストは、2 つの例を示しています (最初の例ではワイルドカードを使用しています)。
<int-http:outbound-gateway id="httpGateway"
url="http://localhost/test2"
mapped-request-headers="thing1, thing2"
mapped-response-headers="X-*, HTTP_RESPONSE_HEADERS"
channel="someChannel"/>
<int-http:outbound-channel-adapter id="httpAdapter"
url="http://localhost/test2"
mapped-request-headers="thing1, thing2, HTTP_REQUEST_HEADERS"
channel="someChannel"/>
アダプターとゲートウェイは DefaultHttpHeaderMapper
を使用します。DefaultHttpHeaderMapper
は、適切な方向を適用できるように、受信と送信のアダプターに 2 つの静的ファクトリメソッドを提供します(HTTP リクエストとレスポンスを適切にマッピングします)。
さらにカスタマイズが必要な場合は、DefaultHttpHeaderMapper
を個別に構成し、header-mapper
属性を介してアダプターに挿入することもできます。
バージョン 5.0 より前の DefaultHttpHeaderMapper
は、ユーザー定義の非標準 HTTP ヘッダーのデフォルトプレフィックスは X-
でした。バージョン 5.0 は、デフォルトのプレフィックスを空の文字列に変更しました。RFC-6648 [IETF] (英語) によると、このようなプレフィックスの使用は現在推奨されていません。DefaultHttpHeaderMapper.setUserDefinedHeaderPrefix()
プロパティを設定することにより、引き続きこのオプションをカスタマイズできます。次の例では、HTTP ゲートウェイのヘッダーマッパーを構成します。
<int-http:outbound-gateway id="httpGateway"
url="http://localhost/test2"
header-mapper="headerMapper"
channel="someChannel"/>
<bean id="headerMapper" class="o.s.i.http.support.DefaultHttpHeaderMapper">
<property name="inboundHeaderNames" value="thing1*, *thing2, thing3"/>
<property name="outboundHeaderNames" value="a*b, d"/>
</bean>
DefaultHttpHeaderMapper
がサポートするもの以外の何かを行う必要がある場合は、HeaderMapper
戦略インターフェースを直接実装し、実装への参照を提供できます。