繁体   English   中英

在 ASP.NET 内核中以编程方式获取 Swagger URL

[英]Get Swagger URL programmatically in ASP.NET Core

我正在使用 ASP.NET 核心 5 和 Swagger。 我知道如何使用 Swagger,它工作正常

Swagger 在foo:5001/swagger上提供 - 但我需要在运行时以编程方式确定 URL 。

我怎样才能做到这一点?


我已经尝试过:

  1. 通过将IEnumerable<EndpointDataSource>注入一些帮助程序/控制器 class 来获取它,但这向我展示了除了招摇的所有路线。

  2. 设置端点路由和检查IEndpointRouteBuilder时获取它,但它再次向我显示了除了招摇的所有路由。

根据https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/master/src/Swashbuckle.AspNetCore.SwaggerUI/SwaggerUIMiddleware.cs的来源,您可以使用 class SwaggerUIOptions的实例

  1. 在 DI 容器中注册实例:
var options = new SwaggerUIOptions 
{
    RoutePrefix = "swagger"
};
options.SwaggerEndpoint("/swagger/v1/swagger.json", "waiting_list v1");
services.AddSingleton(options);
  1. 使用配置的实例:
app.UseSwaggerUI(app.ApplicationServices.GetRequiredService<SwaggerUIOptions>());
  1. 将实例注入任何控制器/类:
public WeatherForecastController(ILogger<WeatherForecastController> logger, SwaggerUIOptions swaggerOptions)
{
}

属性RoutePrefix包含 swagger 前缀(不带前导 '/')

This idea works only if options object passed to UseSwaggerUI method (available since version 6.0.0). 如果使用回调调用UseSwaggerUI (如UseSwaggerUI(a => { a.RoutePrefix = string.Empty; }) )它将不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM