我尝试将消息从REST API发送到新路由,即使我在REST API上接收到JSON格式的请求,并且绑定设置为JSON,当我将其转发到新路由时,它将显示为InputStream,我必须将其封送为JSON才能使用它。
我已经试过在RestConfiguration中使用streamCaching和其他组件(消费、生产、类型、数据类型)。
public void configure() {
restConfiguration().component("servlet")
.bindingMode(RestBindingMode.json)
.skipBindingOnErrorCode(false);
rest("/resttest")
.patch("/t1")
.id("t1")
.description("t1")
.consumes("application/json")
.produces("application/json")
.param()
.name("body")
.type(RestParamType.body)
.dataType("json")
.required(true)
.endParam()
.to("direct:test2");
此路由在其他类中:
from("direct:test2").id("test2")
.marshal().json(JsonLibrary.Jackson,SomePOJO.class)
.unmarshal().json(JsonLibrary.Jackson, SomePOJO.class)
.choice()
.when(simple("${body.getStatus()} =~ 'Closed'"))
.....
我希望在test2路由上得到JSON消息,但不知何故我得到了InputStream,所以我必须首先进行封送处理。有人知道我如何让REST API转发我以JSON格式路由消息,而不是作为流吗?
2条答案
按热度按时间of1yzvn41#
请尝试:
在你解组之前
ny6fqffe2#
我遇到了同样的问题,我必须对传入的值应用编组方法,对响应应用解组方法。

这是 Postman 的回答:
我用的是这个代码:
我只是在意识到接收到InputStream之后添加了unmarshall方法
其实我只是加了这两行
它开始工作:

它认为您可能需要对resttest服务使用解组方法。