HTTP 頭對映
Spring Integration 為 HTTP 請求和 HTTP 響應提供 HTTP 頭對映支援。
預設情況下,所有標準的 HTTP 頭都會從訊息對映到 HTTP 請求或響應頭,無需額外配置。但是,如果您需要進一步定製,可以利用名稱空間支援提供額外的配置。您可以提供一個逗號分隔的頭名稱列表,並且可以使用 '*' 字元作為萬用字元來包含簡單的模式。提供此類值會覆蓋預設行為。基本上,這意味著您在此時完全控制了對映。但是,如果您想包含所有標準的 HTTP 頭,可以使用快捷模式:HTTP_REQUEST_HEADERS
和 HTTP_RESPONSE_HEADERS
。下面的列表顯示了兩個示例(第一個使用了萬用字元)
<int-http:outbound-gateway id="httpGateway"
url="https:///test2"
mapped-request-headers="thing1, thing2"
mapped-response-headers="X-*, HTTP_RESPONSE_HEADERS"
channel="someChannel"/>
<int-http:outbound-channel-adapter id="httpAdapter"
url="https:///test2"
mapped-request-headers="thing1, thing2, HTTP_REQUEST_HEADERS"
channel="someChannel"/>
介面卡和閘道器使用 DefaultHttpHeaderMapper
,它現在為入站和出站介面卡提供了兩個靜態工廠方法,以便可以應用正確的方向(根據需要將 HTTP 請求和響應對映入或出)。
如果您需要進一步定製,還可以獨立配置一個 DefaultHttpHeaderMapper
,並透過 header-mapper
屬性將其注入到介面卡中。
在 5.0 版本之前,DefaultHttpHeaderMapper
使用者定義的非標準 HTTP 頭的預設字首是 X-
。5.0 版本將預設字首更改為空字串。根據 RFC-6648,現在不鼓勵使用此類字首。您仍然可以透過設定 DefaultHttpHeaderMapper.setUserDefinedHeaderPrefix()
屬性來定製此選項。以下示例為一個 HTTP 閘道器配置了頭對映器
<int-http:outbound-gateway id="httpGateway"
url="https:///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
策略介面並提供對您實現的引用。