第280章 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>
280.1. URI 形式
rest-swagger:[specificationPath#]operationId
ここで、operationId
は Swagger 仕様の操作の ID であり、specificationPath
は仕様へのパスです。specificationPath
が指定されていない場合、デフォルトで swagger.json
になります。検索メカニズムは、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 クライアントとしては機能せず、上記の別のコンポーネントに委任します。検索メカニズムは、RestProducerFactory インターフェイスを実装する単一のコンポーネントを検索し、それを使用します。CLASSPATH に複数のパスが含まれている場合は、プロパティー componentName
を設定して、委譲先のコンポーネントを示す必要があります。
設定の大部分は Swagger 仕様から取得されますが、コンポーネントまたはエンドポイントで指定することによってそれらをオーバーライドするオプションが存在します。通常、host
または basePath
が仕様と異なる場合は、オーバーライドする必要があります。
host
パラメーターには、スキーム、ホスト名、およびポート番号を含む絶対 URI を含める必要があります。たとえば、https://api.example.com
です。
componentName
を使用して、リクエストを実行するために使用するコンポーネントを指定します。この名前付きコンポーネントは Camel コンテキストに存在し、必要な RestProducerFactory インターフェイスを実装する必要があります — 上部にリストされているコンポーネントも同様です。
コンポーネントレベルでもエンドポイントレベルでも componentName を指定しない場合、CLASSPATH で適切なデリゲートが検索されます。これが機能するためには、RestProducerFactory インターフェイスを実装する CLASSPATH に 1 つのコンポーネントのみが存在する必要があります。
このコンポーネントのエンドポイント URI は寛大です。つまり、メッセージヘッダーに加えて、REST 操作のパラメーターをエンドポイントパラメーターとして指定できます。これらは、後続のすべての呼び出しで一定であるため、すべての呼び出しで実際に一定であるパラメーターに対してのみこの機能を使用するのが理にかなっています。たとえば、/api/7.8/users/{id}
などのパスの API バージョンです。