骆驼 REST 到外部 API 不返回响应
Camel REST to external API not returning the response
我正在使用 camel-rest 连接到外部 API 并验证 json-schemas,该应用程序按预期工作,但是呼叫没有回复,我只能看到它通过 Camel 内部的日志,如下所示:
INFO [route3] (vert.x-worker-thread-0) HTTP Response: [{"description":"Winter fruit","name":"Apple"},{"description":"Tropical fruit","name":"Pineapple"}]
而且任何卷曲只做 returns 200 OK。
这是我的代码:
public class Validator extends RouteBuilder {
private static final String REST_ENDPOINT_ECHO= "{{rest.endpoint}}?bridgeEndpoint=true" +
"©Headers=true" +
"&connectionClose=true";
@Override
public void configure() throws Exception {
onException(JsonValidationException.class)
.handled(true)
.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(400))
.setHeader(Exchange.CONTENT_TYPE, simple("text/plain"))
.log("Body: ${body}, Header: ${headers}")
.setBody(simple("Error: Invalid JSON Schema"));
rest()
.post("/{{rest.endpoint.subpath}}").enableCORS(true).route()
.to("direct:validator")
.endRest();
from("direct:echoServiceUrl")
.to("json-validator:file:/deployments/schema.json")
.to("http://" + REST_ENDPOINT_ECHO)
.log("HTTP Response: " + "${body}")
.convertBodyTo(String.class)
.end();
Http 组件 returns CachedOutputStream 所以当你记录它时这个流对象正在被消耗并且你得到一个空的响应。这样您的流对象将存储在接下来的步骤中。第一个解决方案你可以像那样设置流缓存到你的代码
.to("https://anyurl.com")
.streamCaching()
.log("my body is ${body}");
否则你必须删除日志行
.log("HTTP Response: " + "${body}")
我正在使用 camel-rest 连接到外部 API 并验证 json-schemas,该应用程序按预期工作,但是呼叫没有回复,我只能看到它通过 Camel 内部的日志,如下所示:
INFO [route3] (vert.x-worker-thread-0) HTTP Response: [{"description":"Winter fruit","name":"Apple"},{"description":"Tropical fruit","name":"Pineapple"}]
而且任何卷曲只做 returns 200 OK。
这是我的代码:
public class Validator extends RouteBuilder {
private static final String REST_ENDPOINT_ECHO= "{{rest.endpoint}}?bridgeEndpoint=true" +
"©Headers=true" +
"&connectionClose=true";
@Override
public void configure() throws Exception {
onException(JsonValidationException.class)
.handled(true)
.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(400))
.setHeader(Exchange.CONTENT_TYPE, simple("text/plain"))
.log("Body: ${body}, Header: ${headers}")
.setBody(simple("Error: Invalid JSON Schema"));
rest()
.post("/{{rest.endpoint.subpath}}").enableCORS(true).route()
.to("direct:validator")
.endRest();
from("direct:echoServiceUrl")
.to("json-validator:file:/deployments/schema.json")
.to("http://" + REST_ENDPOINT_ECHO)
.log("HTTP Response: " + "${body}")
.convertBodyTo(String.class)
.end();
Http 组件 returns CachedOutputStream 所以当你记录它时这个流对象正在被消耗并且你得到一个空的响应。这样您的流对象将存储在接下来的步骤中。第一个解决方案你可以像那样设置流缓存到你的代码
.to("https://anyurl.com")
.streamCaching()
.log("my body is ${body}");
否则你必须删除日志行
.log("HTTP Response: " + "${body}")