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

Apache Camel:Rest OpenAPI组件重复追加basePath致404问题

Camel REST OpenAPI组件重复追加basePath导致404的解决办法

问题场景

使用camel-rest-openapi组件调用Petstore OpenAPI接口时,组件会重复拼接basePath,最终请求路径变成petstore3.swagger.io/api/v3/api/v3/pet/findByStatus?status=available,触发HTTP 404错误。尝试过切换Petstore v2/v3规范、在application.properties设置basePath、给组件加查询参数覆盖basePath等方法,均未解决。

可行解决方案

1. 启用skipBasePath参数跳过规范中的basePath

这是最直接的解决方式,强制组件忽略OpenAPI规范里定义的basePath,避免重复追加。

  • 在YAML DSL的组件全局配置中添加:
components:
  rest-openapi:
    apiSpec: "https://petstore3.swagger.io/api/v3/openapi.json"
    skipBasePath: true
    host: "petstore3.swagger.io"
    scheme: "https"
  • 或者在单个endpoint调用时指定该参数:
- from:
    uri: "direct:callPetstore"
    steps:
      - to:
          uri: "rest-openapi:pet/findByStatus?status=available&skipBasePath=true"

2. 检查并对齐OpenAPI规范与组件的路径配置

  • 确认OpenAPI规范的servers[0].url(v3)或basePath(v2)是否已经包含路径前缀(比如/api/v3)。如果规范里已经有,组件的host配置只需要填域名(petstore3.swagger.io),不要额外加/api/v3,否则会重复拼接。
  • 路由中调用的接口路径要使用规范里定义的相对路径(比如/pet/findByStatus),不要手动加上/api/v3前缀。

3. 清理冲突的全局配置

如果在application.properties中配置过camel.rest.openapi.base-path,要么清空该配置,要么确保它和规范中的basePath不重复,同时结合skipBasePath参数使用,避免双重叠加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:42:38