"Diskriminator" Polymorphismus, Open API 2.0 (Swagger 2.0)

Verweisen auf Open API 2.0, Schema-Objektoder Swagger 2.0, Schema-Objektund die definition von discriminator Feld:

Fügt Unterstützung für Polymorphie. Der Diskriminator ist die schema-name der Eigenschaft, die verwendet wird, zu differenzieren zwischen anderen schema, dass die Erben dieses schema. Der name der Eigenschaft MUSS definiert werden, in diesem schema, und es MUSS in der required Eigenschaft Liste. Wenn verwendet, MUSS der Wert sein, den Namen von diesem schema oder ein schema, das erbt.

Meine Verwirrungen/Fragen:

  • Es ist nicht eindeutig für mich, welche Rolle genau spielt es an der Vererbung oder Polymorphismus. Könnte jemand bitte erklären discriminator mit ein funktionierendes Beispiel zeigen, was es genau macht und was passiert, wenn wir es nicht verwenden? Alle Fehler, Warnungen oder keine Werkzeuge, hängt davon ab, es für einige Vorgänge?
  • Ist es der Fall, dass Fors-editor nicht unterstützen discriminatorund dieses Feld wird verwendet, in einigen anderen tools?

Was ich bisher versucht habe:

  • Habe ich versucht, Fors-editor und das Beispiel aus der gleichen Dokumentation (auch unten erwähnt), zu spielen, um mit dieser Eigenschaft zu sehen, ob ich sehen kann jeder seine speziellen Verhaltensweisen. Ich habe die Eigenschaft, entfernt es, und verlängern die Dog Modell um eine Ebene tiefer und versucht das gleiche auf dem neuen sub-Modell, aber ich sehe keine änderungen in der Vorschau von Fors-editor.
  • Ich habe versucht, online-Suche, und speziell stackoverflow-Fragen, fanden aber keine relevanten Informationen.

Der Beispiel-code, den ich verwendet, um zu tun versuche:

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

InformationsquelleAutor der Frage Musa | 2016-09-25

Schreibe einen Kommentar