3
votes

Comment définir les valeurs par défaut des paramètres de l'interface utilisateur Swagger?

J'ai Swagger / Swashbuckle intégré dans un projet d'API .NET Core 2.2. Tout fonctionne très bien et ce que je demande est purement pratique. Considérez la méthode API suivante:

public Model SomeEstimate(SomeRequest request) {
    return Manager.GetSomeEstimate(request);
}
...
public class SomeRequest {
    public string StreetAddress { get; set; }
    public string Zip { get; set; }
}

Lorsque je clique sur /swagger/index.html et que je veux essayer cette API, je dois toujours saisir les valeurs StreetAddress et Zip.

Existe-t-il un moyen de fournir des valeurs par défaut pour StreetAddress et Zip? Cette réponse a suggéré de placer [DefaultValue ("value here")] attribut chaque propriété de la classe SomeRequest . Cela a peut-être fonctionné pour le .NET normal, mais pas avec .NET Core.

Est-il possible de fournir des valeurs par défaut pour les paramètres de l'interface utilisateur Swagger?


6 commentaires

Voir ce lien: github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/ … .Vous devrez créer un filtre de schéma pour obtenir l'attribut DefaultValue fonctionnant dans .NET Core


@RahulSharma Excellent, ça a fait l'affaire!


Heureux d'entendre que @AngryHacker. Dois-je publier ceci comme réponse à votre question?


@RahulSharma Faites-le pour qu'il soit visible par quiconque a cette question.


Voir ma réponse à cette question similaire: stackoverflow.com/questions/57528575/...


Voir ma réponse à cette question similaire: stackoverflow.com/questions/57528575/...


3 Réponses :


11
votes

Pour définir les valeurs par défaut des paramètres de l'interface utilisateur Swagger dans .NET Core, article définit un filtre de schéma personnalisé pour votre attribut DefaultValue dans votre classe Model. Le code ci-dessous est tiré de cet article et est purement pour informer toute autre personne qui a cette question ou a été confrontée à un problème similaire:

Décorez les propriétés souhaitées dans un modèle:

services.AddSwaggerGen(c => {
    // ...
    c.SchemaFilter<SchemaFilter>();
});


2 commentaires

Toute idée comment fournir des valeurs par défaut pour paramètres avec l'attribut FromQuery ?


@AngryHacker Voir cette question: stackoverflow.com/questions/55375960/…



6
votes

Le crédit initial va à Rahul Sharma , mais si quelqu'un est intéressé par .NET Core 3.0+, Swashbuckle v5. 0.0-rc4 rend la définition de SchemaFilter beaucoup plus simple. Il existe peut-être un moyen d'ajouter une valeur d'exemple avec un nouvel attribut ou quelque chose du genre, mais je n'ai pas trouvé un tel moyen.

public class SchemaFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        if (schema.Properties == null)
        {
            return;
        }

        foreach (var property in schema.Properties)
        {
            if (property.Value.Default != null && property.Value.Example == null)
            {
                property.Value.Example = property.Value.Default;
            }
        }
    }
}


0 commentaires

1
votes

Swashbuckle.AspNetCore 5.6.3 n'a besoin que de DefaultValueAttribute .


0 commentaires