对于最新的稳定版本,请使用 Spring Integration 6.4.0! |
HTTP 标头映射
Spring 集成为 HTTP 请求和 HTTP 响应提供了对 HTTP 头映射的支持。
默认情况下,所有标准 HTTP 标头都从消息映射到 HTTP 请求或响应标头,而无需进一步配置。
但是,如果您确实需要进一步的自定义,则可以利用命名空间支持来提供其他配置。
您可以提供以逗号分隔的标头名称列表,并且可以包含以 '*' 字符作为通配符的简单模式。
提供此类值将覆盖默认行为。
基本上,它假设您在那时完全处于控制之中。
但是,如果您确实希望包含所有标准 HTTP 标头,则可以使用快捷方式模式:和 .
下面的清单显示了两个示例(第一个使用通配符):HTTP_REQUEST_HEADERS
HTTP_RESPONSE_HEADERS
<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"/>
适配器和网关使用 ,它现在为入站和出站适配器提供了两种静态工厂方法,以便可以应用正确的方向(根据需要将 HTTP 请求和响应映射到内部或外部)。DefaultHttpHeaderMapper
如果需要进一步定制,也可以独立配置一个,并通过 attribute 注入到适配器中。DefaultHttpHeaderMapper
header-mapper
在版本 5.0 之前,用户定义的非标准 HTTP 标头的默认前缀为 .
版本 5.0 将默认前缀更改为空字符串。
根据 RFC-6648,现在不鼓励使用此类前缀。
您仍然可以通过设置属性来自定义此选项。
以下示例为 HTTP 网关配置标头映射器:DefaultHttpHeaderMapper
X-
DefaultHttpHeaderMapper.setUserDefinedHeaderPrefix()
<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>
如果您需要执行 支持以外的其他操作,则可以直接实现 strategy 接口并提供对实现的引用。DefaultHttpHeaderMapper
HeaderMapper