第 281 章 REST Swagger 组件
从 Camel 版本 2.19 开始提供
rest-swagger 配置来自 Swagger (Open API)规格文档的其余制作者,并委派给实施 RestProducerFactory 接口的组件。目前已知的组件有:
Maven 用户需要将以下依赖项添加到此组件的 pom.xml
中:
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-rest-swagger</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
281.1. URI 格式
rest-swagger:[specificationPath#]operationId
其中 operationId
是 Swagger 规格中操作的 ID,specificationPath
是规格的路径。如果没有指定 specificationPath
,则默认为 swagger.json
。lookup 机制使用 Camels ResourceHelper
加载资源,这意味着您可以使用 CLASSPATH 资源(classpath:my-specification.json
)、文件(file:/some/path.json
)、Web (http://api.example.com/swagger.json
)或引用 bean (ref:nameOfBean
),或使用 bean (bean:nameOfBean.methodName
)的方法获取规格,该规范失败了 Swagger 资源。
此组件不充当 HTTP 客户端,它将委托给上述另一个组件。lookup 机制搜索实施 RestProducerFactory 接口并使用的单个组件。如果 CLASSPATH 包含多个,则属性 componentName
应设置为指示要委派的组件。
大多数配置都从 Swagger 规格中获取,但 选项存在,可以通过在组件或端点上指定它们来覆盖它们。通常,如果它们与规格不同,您只需要覆盖 host
或 basePath
。
host
参数应包含包含方案、主机名和端口号的绝对 URI,例如: https://api.example.com
使用 componentName
指定用于执行请求的组件,这个指定组件需要在 Camel 上下文中存在,并实施所需的 RestProducerFactory 接口进行顶部列出的组件。
如果您没有在组件或端点级别指定 componentName,则会搜索 CLASSPATH 以获得合适的委托。在 CLASSPATH 中应该只有一个组件,它实现 RestProducerFactory 接口才能正常工作。
此组件的端点 URI 被宽松,这意味着除了消息标头外,您还可以将 REST 操作的参数指定为端点参数,这些参数将始终用于后续调用,因此仅对路径中的所有调用(如 /api/7.12/users/{id}
)的 API 版本意外使用此功能。