asp.net core swagger RoutePrefix - PullRequest
       32

asp.net core swagger RoutePrefix

0 голосов
/ 15 октября 2018

У меня был сайт API, используй сваггер, чтобы выставить API.Версия ядра Dotnet - 2.1, а Swagger - Swashbuckle.AspNetCore 3.0.0.мой сайт API находится за обратным прокси-сервером (nginx), URL-адрес nginx https://www.aa.com/chat, сопоставлен с сервером backen http://127.0.0.1:5003/, а моя конфигурация swagger: ConfigureServices:

services.AddSwaggerGen(c =>
                {
                    c.SwaggerDoc("v1", new Info { Title = "aa.IM.CustomerApi", Version = "v1" });
                    var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
                    var controllerXmlPath = Path.Combine(basePath, "aa.IM.CustomerApi.xml");
                    var entityXmlPath = Path.Combine(basePath, "aa.IM.Entity.xml");
                    c.IncludeXmlComments(controllerXmlPath);
                    c.IncludeXmlComments(entityXmlPath);
                    //c.DescribeAllEnumsAsStrings();
                });

Configure:

app.UseSwagger(c =>
            {
            });
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("v1/swagger.json", "aa.IM.CustomerApi");
            });

тогда я могу войти в пользовательский интерфейс https://www.aa.com/chat/swagger/index.html, а затем пользовательский интерфейс может показать все идеально, но, когда я выполняю API (URI - это CUS / настройки), я нашелURL-адрес запроса https://www.aa.com/cus/settings неправильный, правильный URL-адрес https://www.aa.com/chat/cus/settings.

как я могу исправить конфигурацию сваггера, чтобы решить проблему?Я пробовал много способов, например http://eatcodelive.com/2017/05/19/change-default-swagger-route-in-an-asp-net-core-web-api/ и Как изменить базовый URL Swagger в ядре ASP.NET , но все это не может решить мою проблему.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

спасибо всем, я решил это по следующей конфигурации:

            app.UseSwagger(c =>
            {
                c.PreSerializeFilters.Add((doc, requset) =>
                {
                    var root = "https://www.aa.com/chat/";
                    doc.Host = root;
                });
            });
0 голосов
/ 15 октября 2018

Вы можете попробовать переписать свои URL-адреса, используя app.UseRewriter.

app.UseRewriter(new RewriteOptions()
    .AddRewrite(@"/cus/settings", "Chat$1", skipRemainingRules: true));

Обратите внимание, что это не проверено и просто написано у меня в голове.

...