HTTP 頭對映

Spring Integration 為 HTTP 請求和 HTTP 響應都提供了 HTTP 頭對映支援。

預設情況下,所有標準 HTTP 頭 都會從訊息對映到 HTTP 請求或響應頭,無需額外配置。但是,如果您確實需要進一步的自定義,可以透過利用名稱空間支援來提供額外的配置。您可以提供一個逗號分隔的頭名稱列表,並且可以使用 '*' 字元作為萬用字元來包含簡單模式。提供此類值會覆蓋預設行為。基本上,這意味著您在此時擁有完全的控制權。但是,如果您確實想包含所有標準 HTTP 頭,可以使用快捷方式模式:HTTP_REQUEST_HEADERSHTTP_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 策略介面並提供您的實現引用。

© . This site is unofficial and not affiliated with VMware.