Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第174章 Swagger Java
Swagger Java コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.16 以降で利用可能
Rest DSL は、Swagger を使用して REST サービスとその API を公開するために使用される
camel-swagger-java
モジュールと統合できます。
Maven ユーザーは、このコンポーネントの以下の依存関係を
pom.xml
に追加する必要があります。
Camel 2.16 以降、swagger コンポーネントは純粋に Java ベースであり、そのコンポーネントになります。
camel-swagger-java モジュールはサーブレットとして、または REST コンポーネントから直接使用することもできます(サーブレットは必要ありません)。
Apache Camel ディストリビューションの例ディレクトリー(
camel-example-swagger-cdi
)を参照してください。
Swagger をサーブレットとして使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のように web.xml で swagger を設定します。
rest-dsl での Swagger の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
rest-dsl から swagger api を有効にするには、
apiContextPath
dsl を以下のように設定します。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
swagger モジュールは、以下のオプションを使用して設定できます。サーブレットを使用して設定するには、上記のように init-param を使用します。rest-dsl で直接設定する場合は、
enableCORS
, host,contextPath,
dsl などの適切な方法を使用します。api.xxx
のオプションは、apiProperty
dsl を使用して設定されます。
オプション
|
タイプ
|
説明
|
---|---|---|
cors | ブール値 | CORS を有効にするかどうか。これにより、api ブラウザーの CORS のみが有効になり、REST サービスへの実際のアクセスは有効ではないことに注意してください。デフォルトは false です。このオプションを使用する代わりに、CorsFilte を使用することが推奨されます。詳細は、以下を参照してください。 |
swagger.version | 文字列 | Swagger 仕様バージョン。デフォルトは 2.0 です。 |
host | 文字列 | ホスト名を設定します。camel-swagger-java が設定されていない場合、名前は localhost ベースとして計算されます。 |
スキーマ | 文字列 | 使用するプロトコルスキーム。"http,https" のように、複数の値をコンマで区切ることができます。デフォルト値は「http」です。このオプションは schemes という名前であるため、Camel 2.17 以降では 非推奨 となりました。 |
schemes | 文字列 | Camel 2.17: 使用するプロトコルスキーム"http,https" のように、複数の値をコンマで区切ることができます。デフォルト値は「http」です。 |
base.path | 文字列 |
必須: REST サービスが利用できるベースパスを設定します。パスは相対(http/https で開始されない)であり、camel-swagger-java は実行時に絶対ベースパスを計算します。
protocol://host:port/context-path/base.path
|
api.path | 文字列 |
API が利用できるパスを設定します(例:/api-docs)。パスは相対(http/https で開始されない)であり、camel-swagger-java は実行時に絶対ベースパスを計算します。
protocol://host:port/context-path/api.path
そのため、相対パスの使用ははるかに簡単です。例については、上記を参照してください。
|
api.version | 文字列 | API のバージョン。デフォルトは 0.0.0 です。 |
api.title | 文字列 | アプリケーションのタイトル。 |
api.description | 文字列 | アプリケーションの簡単な説明。 |
api.termsOfService | 文字列 | API の利用規約への URL。 |
api.contact.name | 文字列 | 連絡先に使用する個人または組織の名前 |
api.contact.email | 文字列 | API 関連の対応に使用するメール。 |
api.contact.url | 文字列 | API 関連の問い合わせ先の Web サイトへの URL。 |
api.license.name | 文字列 | API に使用されるライセンス名。 |
api.license.url | 文字列 | API に使用されるライセンスへの URL。 |
apiContextIdListing | boolean | REST サービスを持つ JVM のすべての CamelContext 名の一覧表示を許可するかどうか。有効にすると、api-doc のルートパスにより、すべてのコンテキストが一覧表示されます。無効にするとコンテキスト ID が表示されず、api-doc のルートパスは現在の CamelContext を一覧表示します。デフォルトは false です。 |
apiContextIdPattern | 文字列 | コンテキストリストに示されている CamelContext 名をフィルターできるようにするパターン。このパターンは正規表現と * をワイルドカードとして使用します。Intercep で使用されるのと同じパターンの一致 |
CorsFilter リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
swagger ui を使用して REST API を表示する場合は、CORS のサポートを有効にする必要がある場合があります。これは、swagger ui がホストされ、実際の RESTapis 以外のホスト名/ポートで実行されている場合に必要になります。これを行う場合は、swagger ui が元の CORS (CORS)全体で REST リソースにアクセスできるようにする必要があります。CorsFilter は、CORS を有効にするために必要な HTTP ヘッダーを追加します。
CORS を使用するには、以下のフィルター
org.apache.camel.swagger.servlet.RestSwaggerCorsFilter
を web.xml に追加します。
CorsFilter は、すべてのリクエストに以下のヘッダーを設定します。
- Access-Control-Allow-Origin = *
- access-Control-Allow-Methods = GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH
- Access-Control-Max-Age = 3600
- Access-Control-Allow-Headers = Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers
これは非常に単純な CORS フィルターであることに注意してください。特定のクライアントに異なるヘッダー値を設定するには、より高度なフィルターを使用してヘッダー値を設定する必要がある場合があります。または、特定のクライアントなどをブロックします。
ContextIdListing enabled リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
contextIdListing が有効になっている場合、そのタスクは、同じ JVM で実行されている CamelContext をすべて検出します。これらのコンテキストはルートパスに一覧表示されます(例:'/api-docs')は、名前の簡単なリストとして json 形式になります。swagger のドキュメントにアクセスするには、context-path に 'api-docs/myCamel' などの Camel コンテキスト ID を追加する必要があります。apiContextIdPattern オプションは、このリストの名前をフィルターするために使用できます。
JSON または Yaml リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.17 以降で利用可能
camel-swagger-java モジュールは、設定設定なしで JSon と Yaml の両方をサポートします。リクエスト URL に /swagger.json または /swagger.yaml のいずれかを使用して、返すものを指定できます。指定がない場合は、json または yaml を許可するかどうかを検出するために HTTP Accept ヘッダーが使用されます。両方が受け入れられるか、または何も受け入れられないと、json がデフォルトの形式として返されます。
例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel ディストリビューションでは、この Swagger コンポーネントの使用を示す
camel-example-swagger-cdi
および camel-example-swagger-java
が含まれています。