OpenAPI 2.0、スキーマ オブジェクト、またはSwagger 2.0、スキーマ オブジェクト、およびdiscriminator
フィールドの定義を次のように参照します。
ポリモーフィズムのサポートを追加します。識別子は、このスキーマを継承する他のスキーマを区別するために使用されるスキーマ プロパティ名です。使用されるプロパティ名は、このスキーマで定義する必要があり、
required
プロパティ リストに含まれている必要があります。使用する場合、値はこのスキーマまたはそれを継承するスキーマの名前でなければなりません。
私の混乱/質問:
- 継承またはポリモーフィズムで正確にどのような役割を果たしているのか、私にはあいまいです。
discriminator
それが正確に何をし、それを使用しない場合はどうなるかを示す実際の例で誰かが説明してもらえますか? 一部の操作でそれに依存するエラー、警告、またはツールはありますか? - swagger -editorが をサポートしておらず
discriminator
、このフィールドが他のツールで使用されているということですか?
私がこれまでに試したこと:
- 私は、swagger-editorと同じドキュメント (以下にも記載) の例を使用して、このプロパティをいじって、その特別な動作が見られるかどうかを確認しようとしました。プロパティを変更して削除し、モデルを 1 レベル深く拡張して、新しいサブモデルで同じことを試しましたが、 swagger-editor
Dog
のプレビューに変更は見られませんでした。 - オンラインで、特にスタックオーバーフローの質問を検索してみましたが、関連する情報は見つかりませんでした。
実験に使用したサンプルコード:
definitions:
Pet:
type: object
discriminator: petType
properties:
name:
type: string
petType:
type: string
required:
- name
- petType
Cat:
description: A representation of a cat
allOf:
- $ref: '#/definitions/Pet'
- type: object
properties:
huntingSkill:
type: string
description: The measured skill for hunting
default: lazy
enum:
- clueless
- lazy
- adventurous
- aggressive
required:
- huntingSkill
Dog:
description: A representation of a dog
allOf:
- $ref: '#/definitions/Pet'
- type: object
properties:
packSize:
type: integer
format: int32
description: the size of the pack the dog is from
default: 0
minimum: 0
required:
- packSize