【发布时间】:2019-08-20 08:27:04
【问题描述】:
我正在使用 Asp.Net Core 作为 Rest API 服务。我需要有 API 版本控制。实际上,我在 Startup 以下设置中进行了设置,它可以正常工作,但是当我设置为默认版本时,它无法正常工作。
services.AddVersionedApiExplorer(
options =>
{
options.GroupNameFormat = "'v'VVV";
options.SubstituteApiVersionInUrl = true;
options.AssumeDefaultVersionWhenUnspecified = true;
options.DefaultApiVersion = new ApiVersion(1, 0);
});
services.AddApiVersioning(
options =>
{
options.ReportApiVersions = true;
options.AssumeDefaultVersionWhenUnspecified = true;
options.DefaultApiVersion = new ApiVersion(1, 0);
})
.AddMvc(
options =>
{
options.RespectBrowserAcceptHeader = true;
})
.AddXmlSerializerFormatters();
并在控制器中设置属性,如下所示: 版本 1:
[ApiController]
[Route("v{version:apiVersion}/[controller]")]
[ApiVersion("1.0")]
public class UsersController : ControllerBase
{
[HttpGet("log")]
public string Get()
{
return $"{DateTime.Now}";
}
}
版本 2:
[ApiController]
[Route("v{version:apiVersion}/[controller]")]
[ApiVersion("2.0")]
public class UsersController : ControllerBase
{
[HttpGet("log")]
public string Get()
{
return $"{DateTime.Now}";
}
}
我可以得到流动的网址:
http://localhost:5000/v1/users/log => 状态码:200
http://localhost:5000/v2/users/log => 状态码:200
但是http://localhost:5000/users/log => 状态码:404
如何在版本控制中设置默认 API?
感谢大家抽出宝贵时间尝试帮助解释
【问题讨论】:
标签: asp.net .net api asp.net-core versioning