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

Apache Camel如何透传400错误及对应JSON而非抛出自身异常

解决方案

核心原因是Camel HTTP组件默认会将下游返回的4xx/5xx状态码识别为请求失败,抛出异常后触发默认错误逻辑返回500,修改配置即可实现透传:

原理说明

Camel HTTP组件默认开启throwExceptionOnFailure=true配置,当下游返回状态码大于等于400时,会直接抛出HttpOperationFailedException异常,中断路由流转,原下游的状态码、响应体都会被丢弃,最终返回默认的500错误。

修改方案

在HTTP调用的端点参数中新增throwExceptionOnFailure=false,关闭异常抛出逻辑即可。配置后下游返回的状态码、响应头、响应体都会被原样保留在Exchange中,REST组件会自动将CamelHttpResponseCode头作为响应状态码返回,响应体直接透传原JSON内容。

修改后代码

rest("/internal")
        .post("/getServiceState")
        .to("direct:getServiceState");

from("direct:getServiceState")
        .to("http://endpoint/getServiceState?bridgeEndpoint=true&throwExceptionOnFailure=false");

注意事项

如果你的路由中配置了全局自定义异常处理器,确保不会在异常处理逻辑中覆盖响应状态码和响应体即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:57:03