OpenAPI 仕様およびツールの制限事項
症状
いくつかの OpenAPI リファレンス・ツールでの誤った動作のために、いくつかの特定のユースケースで問題が発生する場合があります。
表 1 では、以下のツールで発生する可能性のある問題を説明しています。
- swagger-core Java™ ライブラリー (製品に組み込まれています): V1.5.10
- Swagger Codegen コード生成ツール: V2.2.1
- Swagger Editor: V2.10.3
Operational Decision Manager は OpenAPI 3.0を使用します。 OpenAPI 2.0 から 3.0 にアップグレードする場合、セキュリティー定義はバージョンによって異なります。 定義を更新しないと、OpenAPI 3.0 でルール・セットを呼び出したときに認証エラーが発生する可能性があります。
表 2: OpenAPI 3.x データ型および制限 は、以下のツールで発生する可能性がある Java タイプの問題を示しています。
- swagger-core Java™ ライブラリー (製品に組み込まれています): V2.1.4
- swagger-codegen コード生成ツール: V3.0.21
問題の診断
ルール・セット・パラメーターの名前を Request または Responseにすることはできません。
| データ・タイプ | 制約事項 |
|---|---|
short 型 |
OpenAPI 仕様には、 integer用の int32 表記と int64 表記、およびマッピング用の標準整数 (int と java.lang.Integer) と long 数値 (long と
java.lang.Long) のみが含まれます。short の数値 ( 結果として、ルール・プロジェクトまたは意思決定サービスで |
password データ型の注釈 |
@ApiModelProperty アノテーションを使用して Java XOM フィールドをカスタマイズすると、HTDS によって生成される OpenAPI 定義ファイルに反映される場合があります。特に、 datatype プロパティーを使用して、 OpenAPI内の Java オブジェクトのフィールドのタイプを指定またはオーバーライドすることができます。 ただし、
password をデータ型として設定した場合、その OpenAPI 定義ファイルは生成されない場合があります。 次のエラーが表示されます。認識されない型 (Unrecognized Type): [null] この問題は、 OpenAPI 定義ファイルの生成に使用される swagger-core Java ライブラリーの動作が正しくないことが原因です。 次善策として、注釈のない (または、少なくとも |
binary データ型の注釈 |
password データ型と同様に、Java XOM の String フィールドには、データ型プロパティーとして binary を持つ @ApiModelProperty 注釈を付けることができます。
ただし、Swagger Codegen ツールを使用して Java クライアントを生成すると、注釈付きフィールドは この特定のユースケースでは、Swagger Editor を使用すれば、このような問題は発生しません。 |
byte 型 |
byte または java.lang.Byte を XOM フィールドまたはルール・セット・パラメーターとして使用すると、Swagger Codegen ツールによって生成された Java クライアントでは byte[] になります。これにより、実行時にルール・セット実行エラーが発生します。この特定のユース・ケースでは、Swagger Editor を使用するときにこのような問題は発生しません。これは、バイトがストリングとして表され、HTDS REST がそれらを受け入れて実際のバイトに変換するためです。 |
arrays |
Swagger Codegen ツールを使用して Java クライアントを生成すると、配列はリストになります。 例えば、型 |
| データ・タイプ | 制約事項 |
|---|---|
byte 型 |
使用される値が制限事項の範囲外であれば、結果は間違いとなるはずです。 |
char 型 |
ストリング値の長さが 1 より大きい型を使用すると、実行時にエラーが発生します。 |
short 型 |
使用される値が short |