Это хорошо подходит для локальной разработки и обеспечивает быструю обратную связь.
Эти службы развертываются в Kubernetes, и каждая служба, которую мы создаем и развертываем, доступна через собственный подпуть в основном домене приложения, например:
Код: Выделить всё
https://app.example.org/book-import/swagger/...Код: Выделить всё
https://app.example.org/order-export/swagger/...Код: Выделить всё
...
Я пытался использовать PreSerializeFilters< /code>, но он ведет себя не так, как ожидалось.
Вот что у меня сейчас:
Код: Выделить всё
app.MapSwaggerDefaults(builder.Configuration, swaggerOptions: options =>
{
options.PreSerializeFilters.Add((swagger, httpReq) =>
{
app.Services.GetRequiredService().LogInformation("Swagger path: {Path}", httpReq.Path.Value);
if (httpReq.Path.Value != null && !httpReq.Path.Value.StartsWith("/swagger"))
{
swagger.Servers = new List { new OpenApiServer { Url = httpReq.Path.Value.Replace("/swagger", "!").Split('!')[0] } };
}
});
});
Выполняется эта версия приложения локально в Visual Studio «работает», потому что я могу установить точку останова в if (httpReq.Path.Value != ..., и там она прерывается. Но > если я запущу этот же код через Visual Studio Kubernetes Bridge в полностью развернутом кластере или и отправлю новый образ, содержащий это изменение, и развернув его в полностью развернутом кластере, это не сработает.
URL-адреса не изменяются в пользовательском интерфейсе Swagger, и я даже не вижу пути Swagger для вывода журнала:
Как я могу установить URL-адреса для Функция «Попробуйте» в пользовательском интерфейсе Swagger, чтобы она работала, когда приложение работает по дополнительному пути?
Или эти PreSerializeFilters работают по-другому на K8s?
То, что я тоже пробовал, но безуспешно:
Код: Выделить всё
builder.Services.AddSwaggerGen(o =>
o.SwaggerGeneratorOptions.Servers = new List { new OpenApiServer { Url = "/book-import" }
});
Swashbuckle.AspNetCore 6.8.1
Подробнее здесь: https://stackoverflow.com/questions/791 ... en-running
Мобильная версия