【发布时间】:2020-09-04 08:57:56
【问题描述】:
全部!
我在 ASP.NET Core 3.1 应用程序中使用 Swagger。
我需要为新版本的 API 创建一个端点,并使用与以前版本相同的路由。
我的控制器是:
namespace Application.Controllers
{
[ApiVersion("1")]
[ApiVersion("2")]
[ApiController]
[Route("api/v{version:apiVersion}")]
public class CustomController: ControllerBase
{
[HttpGet]
[Route("result")]
public IActionResult GetResult()
{
return Ok("v1")
}
[HttpGet]
[MapToApiVersion("2")]
[Route("result")]
public IActionResult GetResult(int number)
{
return Ok("v2")
}
}
}
我的配置:
services.AddApiVersioning(
options =>
{
options.ReportApiVersions = true;
});
services.AddSwaggerGen(c =>
{
c.SwaggerDoc($"v1", new OpenApiInfo { Title = "api1", Version = $"v1" });
c.SwaggerDoc($"v2", new OpenApiInfo { Title = "api2", Version = $"v2" });
c.OperationFilter<RemoveVersionParameterFilter>();
c.DocumentFilter<ReplaceVersionWithExactValueInPathFilter>();
c.EnableAnnotations();
});
app.UseSwagger().UseSwaggerUI(c =>
{
c.SwaggerEndpoint($"/swagger/v1/swagger.json", $"api1 v1");
c.SwaggerEndpoint($"/swagger/v2/swagger.json", $"api2 v2");
});
加载后出现错误:Fetch error undefined /swagger/v1/swagger.json 但是如果我将第二条路由更改为“resutlTwo”,我可以大摇大摆地观察两个端点,忽略当前版本(api1 v1 或 api2 v2)
如何才能看到每个 API 版本只有 1 个端点?
【问题讨论】:
标签: asp.net-core swagger swashbuckle.aspnetcore