Saltar al contenido

“discriminador” en polimorfismo, OpenAPI 2.0 (Swagger 2.0)

Solución:

Según este grupo de Google, discriminator se utiliza en la parte superior del allOf propiedad y se define en el super tipo para polimorfismo. Si discriminator no se utiliza, el allOf La palabra clave describe que un modelo contiene las propiedades de otros modelos de composición.

Al igual que en su código de muestra, Pet es un super tipo con propiedad de petType identificado como el discriminator y Cat es un subtipo de Pet. A continuación se muestra un ejemplo json de un Cat objeto:

{
  "petType": "Cat",
  "name": "‎Kitty"
}

El uso de discriminator tiene la intención de indicar la propiedad utilizada para identificar el tipo de un objeto. Asume que hay herramientas que pueden soportar correctamente los objetos de definición con el uso de discriminator, es posible determinar el tipo escaneando la propiedad. Por ejemplo, identificar el objeto es un Cat de acuerdo a petType.

sin embargo, el discriminator El campo no está bien definido en la especificación de la versión actual o en los ejemplos (consulte el número 403). Hasta donde yo sé, no hay herramientas proporcionadas por Swagger que lo apoyen adecuadamente en este momento.

discriminator se puede utilizar si el modelo tiene una propiedad utilizada para determinar el tipo. En este caso, se ajusta naturalmente y se puede utilizar como indicador para que otros desarrolladores comprendan la relación del polimorfismo. Si herramientas de terceros como ReDoc que admiten discriminator (ver petType en este gif y ejemplo), puede resultarle útil.

La funcionalidad del discriminador se ha mejorado mucho en OpenApi 3. Ahora proporciona un objeto discriminador que contiene el nombre de la propiedad del discriminador, así como un mapeo de los valores de esa propiedad a los nombres de esquema.

(Me doy cuenta de que preguntaste sobre OpenApi 2, pero esto ha mejorado tanto en 3 que espero que puedas usarlo).

Consulte: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#discriminatorObject para obtener las especificaciones reales

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *