第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 が含まれています。