当前位置: 首页 > 知识库问答 >
问题:

Http网关和Json转换器:剥离的头

芮朗
2023-03-14

---->HTTP-Inbound-Gateway->JSON-to-Object-Transformer->

客户:

<int:chain id="messageTransformerChain" input-channel="toServer" output-channel="messagesToServer">
    ...
    <int:object-to-json-transformer />
</int:chain>

<int-http:outbound-gateway id="httpOutToSever"
    request-channel="messagesToServer"
    reply-channel="replyFromServer"
    url="${server.endpoint}"
    http-method="POST"
    extract-request-payload="true"
    expected-response-type="java.lang.String" />

服务器:

<int-http:inbound-gateway id="httpInboundFromClientGateway"
    supported-methods="GET, POST"
    request-channel="fromClientChannel" />

<int:chain input-channel="fromClientChannel">
    <int:json-to-object-transformer />
    ...
</int:chain>

我不希望在通道的特定映射器上显式地指示类型,因为它们可以变化。有没有一种方法来配置我需要的组件来支持这个路径?

--引用--

(1)http://docs.spring.io/spring-integration/reference/html/messaging-transformation-chapter.html#Transformer滚动到Json Transformers小节

共有1个答案

楚和悌
2023-03-14

使用出站http适配器,用户头(在他的例子中是json类型信息)通过http以x-

...

<int-http:outbound-gateway request-channel="requestChannel" 
                           url="http://localhost:18080/http/receiveGateway"
                           http-method="POST"
                           mapped-request-headers="foo"
                           expected-response-type="java.lang.String"/>

POST /http/receiveGateway HTTP/1.1
Accept: text/plain, */*
X-foo: bar

在服务器端,x-不会被删除,因此您必须将其映射到X...

<int-http:inbound-gateway request-channel="receiveChannel"
                      path="/receiveGateway"
                      mapped-request-headers="x-foo"
                      supported-methods="POST"/>

然后,您需要在变压器之前的 中使用 来设置标题(减去“x-”)...

<int:header-enricher>
    <int:header name="json__TypeId__" expression="headers['x-json__TypeId__']" />
    ...
</int:header-enricher>

(注意小写x)。

编辑:

或者,在发送端,您可以将映射器配置为不为自定义头加前缀...

<bean id="mapper" class="org.springframework.integration.http.support.DefaultHttpHeaderMapper">
    <property name="outboundHeaderNames" value="foo,bar" />
    <property name="userDefinedHeaderPrefix" value="" />
</bean>

 类似资料:
  • 我有一个标准的json结构,里面有这样的内容

  • 我目前正在使用SpringNetflixZuul库为一个新的微服务系统构建API网关。 到目前为止,我的网关包含和过滤器,用于拦截请求并执行所需的逻辑等。 我看到的一件事是,对特定微服务的REST调用需要调用包含非常复杂的JSON有效负载数据的APIendpoint(GET或POST)。 对于最终用户来说,向包含此JSON的微服务发送请求对用户不友好。 我有一个想法,即API网关充当中介,用户可以

  • 我知道我可以在CKEditor配置文件中添加异常来允许某些HTML标记,但我希望有一种更简单的方法来实现这一点 基本上,我只需要一个简单的方法,以文字标题图像。有没有办法用CKEditor不会删除的东西复制 和 的功能?

  • 问题内容: 我有一个场景。 必需的输入和输出是JSON。 我需要一些转换代码或最好是xslt类型的语言才能将json从一种格式转换为另一种格式。该变压器也需要快速运行,因为转换将即时进行。 编辑 我没有收到INPUT对象的定义,它可能会在运行时更改。但是如果需要,我可以将类用于OUTPUT对象。我尝试以 json- > xml-> xslt-> xml-> json的方式进行此操作 ,但 此刻 每

  • 我想找一份工作。NET核心应用程序运行在elastic beanstalk上,从浏览器中的javascript接收WebSocket连接。 当我在本地机器上测试AWS外部的客户端和服务器时,我能够在两者之间建立websocket连接。但是,当我将服务器部署到elastic beanstalk时,会出现以下错误 服务器使用101交换协议进行响应,因此我知道服务器正在尝试建立连接,但缺少Sec Web

  • 问题内容: 寻找匹配和替换的正则表达式序列(最好是PHP,但没关系)以更改此规则(开始和结束只是需要保留的随机文本)。 在: 到这个OUT: 谢谢。 问题答案: 您是否只是想删除评论?怎么样 或稍好一点(由发问者本人建议): 但是请记住,HTML 不是 正规的,因此当有人向其抛出奇怪的边缘情况时,使用正则表达式进行解析将使您陷入痛苦的世界。