全部!
我在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”,我可以在swagger中观察到两个端点,忽略当前版本(api 1 v1或api 2 v2)
如何才能在每个API版本中只看到1个端点?
3条答案
按热度按时间vwkv1x7d1#
感谢Roar S.的帮助!
我刚加了
和
它将端点拆分到不同的文件。
jbose2ul2#
我刚刚用这个设置测试了你的情况。你缺少
UrlSegmentApiVersionReader
。在启动#ConfigureServices
在启动#配置
appsettings.json
这段代码与我在SO上处理的一个相关问题非常相似。
j2qf4p5b3#
谢谢你们,这个代码样本对我帮助很大。您可以将其用于1.0和2.0等版本。这对我很有效
谢谢你的帮助<3