пути и определения swagger.json пусты. В спецификации не определены операции - PullRequest
0 голосов
/ 12 января 2019

Я занимаюсь разработкой веб-приложения .netcore. Я использую чванство, и я сделал все необходимые корректировки. К сожалению, это не работает, и я просто вижу No operations defined in spec! на странице вывода чванства.

Файл чванства с /swagger/v1/swagger.json имеет следующее содержимое:

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

Я хочу видеть мои контроллеры и их действия на странице вывода swagger.

Ответы [ 2 ]

0 голосов
/ 13 января 2019

после некоторых исследований я обнаружил, что моя проблема заключалась в использовании чванства вместе с OData в .NetCore2.1. Я нашел решение этой проблемы.

сначала я добавил два следующих пакета Nuget:

Swashbuckle.AspNetCore
Swashbuckle.AspNetCore.Annotations

Затем я добавил следующие коды в 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);

, я добавил следующую строку кода в контроллеры:

[ApiExplorerSettings(IgnoreApi = false)] 

обратите внимание, что это сработало для меня, но, возможно, потребуется больше исследований для выявления побочных эффектов

0 голосов
/ 12 января 2019

вам нужно включить XML Documentation file на вкладке project obtions => Build.

Затем вам нужно прочитать этот файл через swagger, чтобы swagger мог создавать из него документацию.

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};

    }
}

В 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)));

    ....
});
...