Swagger использует настраиваемое ядро ​​aspnet файла swagger.json - PullRequest
0 голосов
/ 04 января 2019

Я уверен, что упускаю что-то явно очевидное, но не вижу этого.

Как я могу использовать мой обновленный файл swagger.json?

Я взял свой стандартный шаблон swagger / v1 / swagger.json и вставил его в систему editor.swagger.io.Затем я обновил описания и т. Д., Добавил примеры к своим моделям, а затем сохранил содержимое как swagger.json.Переместил файл в корень моего приложения API, установите файл для копирования всегда.

 public void ConfigureServices(IServiceCollection services)
    {...
        services.AddSwaggerGen(c => { c.SwaggerDoc("V1", new Info {Title = "Decrypto", Version = "0.0"}); });

    }


 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
      ...
        app.UseSwagger();
      //--the default works fine
     //  app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/V1/swagger.json", "Decrypto v1"); });
        app.UseSwaggerUI(c => { c.SwaggerEndpoint("swagger.json", "Decrypto v1"); });

        app.UseMvc();
    }

Я пробовал несколько разных вариантов, но ни одна из них, похоже, не уловка.Я действительно не хочу переписывать работу в SwaggerDoc, так как мне кажется грязным помещать документацию во время выполнения.

пользовательский файл swagger.json, который я хочу использовать, выглядит следующим образом:

        {
      "swagger": "2.0",
      "info": {
        "version": "0.0",
        "title": "My Title"
      },
      "paths": {
        "/api/Decryption": {
          "post": {
            "tags": [
              "API for taking encrypted values and getting the decrypted values back"
            ],
            "summary": "",
            "description": "",
            "operationId": "Post",
            "consumes": [
              "application/json-patch+json",
              "application/json",
              "text/json",
              "application/*+json"
            ],
            "produces": [
              "text/plain",
              "application/json",
              "text/json"
            ],
            "parameters": [
              {
                "name": "units",
                "in": "body",
                "required": true,
                "schema": {
                  "uniqueItems": false,
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/EncryptedUnit"
                  }
                }
              }
            ],
            "responses": {
              "200": {
                "description": "Success",
                "schema": {
                  "uniqueItems": false,
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/DecryptedUnit"
                  }
                }
              }
            }
          }
        }
      },
      "definitions": {
        "EncryptedUnit": {
          "type": "object",
          "properties": {
            "value": {
              "type": "string",
              "example": "7OjLFw=="
            },
            "initializeVector": {
              "type": "string",
              "example": "5YVg="
            },
            "cipherText": {
              "type": "string",
              "example": "596F5AA48A882"
            }
          }
        },
        "DecryptedUnit": {
          "type": "object",
          "properties": {
            "encrypted": {
              "type": "string",
              "example": "7OjLV="
            },
            "decrypted": {
              "type": "string",
              "example": "555-55-5555"
            }
          }
        }
      }
    }

1 Ответ

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

вам нужно настроить PhysicalFileProvider и поместить ваш swagger.json в wwwroot или в любое другое место, доступное для PhysicalFileProvider.После этого вы можете получить к нему доступ, используя IFileProvider

Ссылка: https://www.c -sharpcorner.com / article / file-provider-in-asp-net-core /


Редактировать Если вы просто добавите app.UseStaticFiles(); в свой автозапуск, вы сможете получить доступ к wwwroot без суеты.

Ссылка


Совершенно другой подход

Вы также можете рассмотреть возможность подачи файла с помощью Controller / Action

public IActionResult GetSwaggerDoc()
{
    var file = Path.Combine(Directory.GetCurrentDirectory(), 
                            "MyStaticFiles", "swagger.json");

    return PhysicalFile(file, "application/json");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...