5 votes

Les chemins et définitions de swagger.json sont vides. Aucune opération définie dans la spécification

Je développe une application web .netcore. J'utilise swagger et j'ai fait tous les ajustements nécessaires. Malheureusement, cela ne fonctionne pas et je vois juste No operations defined in spec! dans la page de sortie de swagger.

Le fichier swagger avec /swagger/v1/swagger.json a le contenu suivant :

{
  "swagger": "2.0",
  "info": {
    "version": "v1",
    "title": "Something"
  },
  "paths": {},
  "definitions": {}
}

Je veux voir mes contrôleurs et leurs actions dans la page de sortie de swagger.

3voto

Hamid Nasirloo Points 313

Après quelques recherches, j'ai découvert que mon problème concernait l'utilisation de swagger avec OData dans .NetCore2.1. J'ai trouvé une solution à ce problème.

J'ai d'abord ajouté les deux paquets Nuget suivants :

Swashbuckle.AspNetCore
Swashbuckle.AspNetCore.Annotations

Ensuite, j'ai ajouté les codes suivants dans Startup.cs

services.AddMvc(options => {
                foreach (var outputFormatter in 
options.OutputFormatters.OfType<ODataOutputFormatter>().Where(_ => 
_.SupportedMediaTypes.Count == 0))
                {
                    outputFormatter.SupportedMediaTypes.Add(new 
MediaTypeHeaderValue("application/prs.odatatestxx-odata"));
                }
                foreach (var inputFormatter in 
options.InputFormatters.OfType<ODataInputFormatter>().Where(_ => 
_.SupportedMediaTypes.Count == 0))
                {
                    inputFormatter.SupportedMediaTypes.Add(new 
MediaTypeHeaderValue("application/prs.odatatestxx-odata"));
                }
            }).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

j'ai ajouté la ligne de code suivante dans les contrôleurs :

[ApiExplorerSettings(IgnoreApi = false)] 

Je pense que ce produit a fonctionné pour moi, mais il est possible qu'il faille mener des recherches plus approfondies sur les effets secondaires éventuels.

-1voto

Vous devez activer XML Documentation file sous project obtions => Build tabulation.

Ensuite, vous devez lire ce fichier par l'intermédiaire de swagger afin que swagger puisse créer de la documentation à partir de ce fichier.

private static string[] XmlCommentsFilePath
{
    get
    {
        var basePath = PlatformServices.Default.Application.ApplicationBasePath;

        var apiDocFile = typeof(Startup).GetTypeInfo().Assembly.GetName().Name + ".xml";
        var apiPath = Path.Combine(basePath, apiDocFile);

        return new[] {apiPath};

    }
}

Dans ConfigureServices

services.AddSwaggerGen(options =>
{ 
    var provider = services.BuildServiceProvider().GetRequiredService<IApiVersionDescriptionProvider>();

    // add a swagger document for each discovered API version
    provider.ApiVersionDescriptions.ForEach(x => options.SwaggerDoc(x.GroupName, CreateInfoForApiVersion(x)));

    ....
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X