J'utilise Swashbuckle pour générer de la documentation swagger \ UI pour un projet webapi2. Nos modèles sont partagés avec certaines interfaces héritées, donc il y a quelques propriétés que je veux ignorer sur les modèles. Je ne peux pas utiliser l'attribut JsonIgnore car les interfaces héritées doivent également être sérialisées en JSON, donc je ne veux pas ignorer les propriétés globalement, juste dans la configuration Swashbuckle.Comment faire pour configurer Swashbuckle pour ignorer la propriété sur le modèle
J'ai trouvé une méthode de faire ce qui est documenté ici:
https://github.com/domaindrivendev/Swashbuckle/issues/73
Mais cela semble être à jour avec la version actuelle Swashbuckle.
La méthode recommandée pour l'ancienne version de Swashbuckle utilise une implémentation IModelFilter comme suit:
public class OmitIgnoredProperties : IModelFilter
{
public void Apply(DataType model, DataTypeRegistry dataTypeRegistry, Type type)
{
var ignoredProperties = // use reflection to find any properties on type decorated with the ignore attributes
foreach (var prop in ignoredProperties)
{
model.Properties.Remove(prop.Name);
}
}
}
SwaggerSpecConfig.Customize(c => c.ModelFilter<OmitIgnoredProperties>());
Mais je ne suis pas sûr comment configurer Swashbuckle utiliser la IModelFilter dans la version actuelle? J'utilise Swashbuckle 5.5.3.
vous pouvez effectivement utiliser JsonIgno repropety qui ne montrera pas la propriété dans le fanfaron –
Comme mentionné dans la question je ne veux pas utiliser JsonIgnore comme j'ai le code hérité qui doit également utiliser les modèles, et si j'applique JsonIgnore qui affectera swagger et le code hérité ... – mutex