You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Camel REST调用外部API正常但无响应仅返回200 OK问题

问题原因

你遇到的问题核心是路由调用链路不匹配,Camel REST入口路由没有正确对接处理外部API调用的业务路由,导致没有可返回的响应内容,只能返回默认的空响应+200状态码。

具体修改方案
  • 第一步:修正路由ID匹配关系
    你当前REST路由配置的调用目标是direct:validator,但实际执行JSON校验、外部API调用的路由入口是direct:echoServiceUrl,两边名称完全不一致,导致调用链路中断,REST路由拿不到业务处理结果。
    你可以二选一修改:

    1. 把REST路由中的to("direct:validator")修改为to("direct:echoServiceUrl")
    2. 把业务路由的from("direct:echoServiceUrl")修改为from("direct:validator")
  • 第二步(可选优化):补充响应头配置
    为了避免客户端识别响应格式异常,可以在业务路由末尾添加Content-Type设置,适配外部API返回的JSON格式:

.setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
修正后的完整代码示例
public class Validator extends RouteBuilder {

    private static final String REST_ENDPOINT_ECHO= "{{rest.endpoint}}?bridgeEndpoint=true" +
            "&copyHeaders=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:echoServiceUrl")
            // 可选:添加出口日志,确认返回内容
            .log("Return to client: ${body}")
            .endRest();

        from("direct:echoServiceUrl")
             .to("json-validator:file:/deployments/schema.json")
             .to("http://" + REST_ENDPOINT_ECHO)
             .log("HTTP Response: " + "${body}")
             .convertBodyTo(String.class)
             // 可选:设置正确的JSON响应头
             .setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
        .end();
    }
}

修改完成后重启应用,再用curl调用就能拿到外部API返回的JSON内容了。


内容的提问来源于stack exchange,提问作者RLam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:36:02