microsoft / microsoft/OpenAPI.NET.OData

When EnableDiscriminatorValue is set to true all types end up with a required property of odata.type

Ouverte
#520 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
C#
Étoiles
240
Forks
70
Merge moyen
7 h 59 min
PR mergées (30 j)
13

Description

My understanding is odata.type is only required in the case the type cannot be determined such as it being a type derived from the specified type.

When using EnableDiscriminatorValue = true I get correctly odata.type used as a discriminator when a type has a derived type.
I also get however for seemingly all types, odata.type included as a required property.

Assemblies affected

v1.1.0

Steps to reproduce
  1. Create an odata model with no derived types.
  2. Generate an Open API specification from the model with EnableDiscriminatorValue = true.
Expected result

I would only expect odata.type to be required in the case a type is a derived type.

Actual result

odata.type is set as required for all types.

If I use Open API connected services in Visual Studio with the specification to generate a client, the client will fail to deserialize responses missing the required property by default.

Additional detail

This can be worked around in most case.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire le problème avec un modèle OData qui ne comporte aucun type dérivé et pour lequel EnableDiscriminatorValue est défini sur true, puis examinez la spécification OpenAPI générée. Suivez la manière dont les métadonnées du discriminant deviennent une propriété obligatoire ; le travail est terminé lorsque odata.type n’est obligatoire que là où les types dérivés le rendent nécessaire, sans interrompre la désérialisation valide côté client.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
csharp, openapi
Domaine
api
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.