4.5. OpenAPI Integration
概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenAPI サービスを使用して、CamelContext ファイルの REST 定義ルートおよびエンドポイントの API ドキュメントを作成できます。これには、純粋に Java ベースの camel-openapi-java
モジュールと Camel REST DSL を使用します。camel-openapi-java
モジュールは、CamelContext と統合し、各 REST エンドポイントから情報をプルして JSON または YAML 形式の API ドキュメントを生成するサーブレットを作成します。
Maven を使用する場合は、pom.xml
ファイルを編集して camel-openapi-java
コンポーネントに依存関係を追加します。
OpenAPI を有効にする CamelContext の設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel REST DSL で OpenAPI の使用を有効にするには、api ContextPath()
を呼び出して OpenAPI が生成する API ドキュメントのコンテキストパスを設定します。以下に例を示します。
OpenAPI モジュール設定オプション リンクのコピーリンクがクリップボードにコピーされました!
以下の表に記載されているオプションを使用すると、OpenAPI モジュールを設定できます。以下のようにオプションを設定します。
-
camel-openapi-java
モジュールをサーブレットとして使用する場合は、web.xml
ファイルを更新し、設定する各設定オプションにinit-param
要素を指定してオプションを設定します。 -
Camel REST コンポーネントから
camel-openapi-java
モジュールを使用している場合は、enableCORS()、host()、または
などの適切なcontextPath(
)RestConfigurationDefinition
メソッドを呼び出してオプションを設定します。api.xxx
オプションをRestConfigurationDefinition.apiProperty()
メソッドで設定します。
オプション | 型 | 説明 |
---|---|---|
| 文字列 | API 関連の連絡先に使用するメールアドレス。 |
| 文字列 | API 関連の連絡先に使用する個人または組織の名前。 |
| 文字列 | API 関連の問い合わせ先の Web サイトへの URL。 |
| ブール値 |
アプリケーションに複数の |
| 文字列 | コンテキストリストに表示される CamelContext ID のフィルターパターン。正規表現を指定し、ワイルドカードとして * を使用することができます。これは、Camel Intercept 機能で使用されるのと同じパターンマッチング機能です。 |
| 文字列 | API に適用されるライセンス名。 |
| 文字列 | API に適用されるライセンスの URL。 |
| 文字列 |
ドキュメントを生成する REST API が使用可能なパスを設定します (例: |
| 文字列 | API の利用規約への URL。 |
| 文字列 | アプリケーションの名前。 |
| 文字列 | API のバージョン。デフォルトは 0.0.0 です。 |
| 文字列 |
必須。REST サービスが利用できるパスを設定します。相対パスで指定します。たとえば、 |
| ブール値 |
CORS (オリジン間リソース共有) を有効にするかどうか。これにより、CORS は REST API ドキュメントを閲覧する場合のみ有効になり、REST サービスにアクセスする場合には有効になりません。デフォルトは false です。この表の後で説明するように、代わりに |
| 文字列 |
OpenAPI サービスが実行されているホストの名前を設定します。デフォルトでは、 |
| 文字列 |
使用するプロトコルスキーム。複数の値はカンマで区切ります (例: |
| 文字列 | OpenAPI 仕様バージョン。デフォルトは 3.0 です。 |
JSON または YAML 形式の出力 リンクのコピーリンクがクリップボードにコピーされました!
Camel 3.1 より、camel-openapi-java
モジュールは JSON および YAML 形式の出力の両方をサポートします。必要な出力を指定するには、/openapi.json
または /openapi.yaml
を要求 URL に追加します。リクエスト URL が形式を指定しない場合、camel-openapi-java
モジュールは HTTP Accept ヘッダーを検査して JSON または YAML を許可するかどうかを検出します。両方が受け入れられるか、両方が受け入れられないと検知された場合は、デフォルトの JSON 形式が出力されます。
例 リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel 3.x ディストリビューションでは、camel-example-openapi-cdi
および camel-example-
モジュールの使用を実証します。
openapi-java
Apache Camel 2.x ディストリビューションでは、camel-example-swagger-cdi
および camel-example-
モジュールの使用を実証します。
swagger-java
OpenAPI によって生成されるドキュメントの改良 リンクのコピーリンクがクリップボードにコピーされました!
Camel 3.1 以降では、名前、説明、データタイプ、パラメータータイプなどのパラメーターの詳細を定義することで、OpenAPI によって生成されたドキュメントを強化できます。XML DSL を使用している場合は、param
要素を指定してこれらの情報を追加します。以下の XML DSL の例は、ID パスパラメーターに関する情報を補足する方法を示しています。
以下は Java DSL の例です。
.get("/{id}").description("Find user by ID.").outType(User.class) .param().name("id").type(path).description("The ID of the user to get information about.").dataType("int").endParam() .to("bean:userService?method=getUser(${header.id})")
.get("/{id}").description("Find user by ID.").outType(User.class)
.param().name("id").type(path).description("The ID of the user to get information about.").dataType("int").endParam()
.to("bean:userService?method=getUser(${header.id})")
名前が body
のパラメーターを定義する場合は、そのパラメーターの型として body
も指定する必要があります。以下に例を示します。
以下は Java DSL の例です。
.put().description("Updates or create a user").type(User.class) .param().name("body").type(body).description("The user to update or create.").endParam() .to("bean:userService?method=updateUser")
.put().description("Updates or create a user").type(User.class)
.param().name("body").type(body).description("The user to update or create.").endParam()
.to("bean:userService?method=updateUser")
Apache Camel ディストリビューションの examples/camel-example-servlet-rest-tomcat
も参照してください。