大佬教程收集整理的这篇文章主要介绍了ASP.NET Core API 版本,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 ASP.NET Core 及其版本创建 API。我安装了 @H_529_3@microsoft.AspNetCore.Mvc.Versioning。我喜欢的就是URL中所有带有版本的API,所以很容易理解我使用的是什么版本的API。例如/API/v1/tableAzurecategory
。
为此,在我的 Startup.cs
中,我添加了以下代码行:
services.AddAPIVersioning(config =>
{
config.DefaultAPIVersion = new APIVersion(1,0);
config.AssumeDefaultVersionWhenUnspecifIEd = true;
config.ReportAPIVersions = true;
config.APIVersionReader = new UrlsegR_59_11845@entAPIVersionReader();
});
然后,在我的 API 控制器中我添加了一些装饰
[APIController]
[APIVersion("1.0")]
[Route("API/v{version:APIVersion}/[controller]")]
public class tableAzurecategoryController : ControllerBase
{
}
我运行应用程序,打开 Swagger,这就是我看到的(基本上 {version:APIVersion}
没有被 API 版本替换)
@H_674_29@
我环顾四周,但我只找到了与上面类似的实现。有什么想法吗?
实现这一目标的另一种方法是创建基于查询的版本控制解决方案。
假设我们有两个控制器:ExampleV1Controller 和 ExampleV2Controller
using Microsoft.AspNetCore.Mvc;
namespace MyAPI.Controllers
{
[ApiController]
[ApiVersion("1.0")]
[Route("api/example")]
public class ExampleV1Controller : ControllerBase
{
[httpGet]
public IActionResult Get()
{
return new OkObjectResult("Example API v1");
}
}
[ApiController]
[ApiVersion("2.0")]
[Route("api/example")]
public class ExampleV2Controller : ControllerBase
{
[httpGet]
public IActionResult Get()
{
return new OkObjectResult("Example API v2");
}
}
}
根据您的 Startup.cs 配置,它将默认为 API 版本 1.0。要向 V2 版本发出请求,请使用 https://localhost:5001/api/example?api-version=2.0
。
我没有亲自测试过,但它应该可以工作。
,{version}
路由参数的行为与任何其他路由参数一样。如果路由是 values/{iD}/subvalues
,您会期望必须填写一个名为 id
的参数。
用于 API 版本控制的 API Explorer 扩展知道与 API 关联的版本。此值用作默认值,但 OpenAPI/Swagger 生成器(例如:Swashbuckle)可能不会在没有一点帮助的情况下使用默认值(请参阅端到端 Swagger Example)。当且仅当您按 URL 段进行版本控制时,您可以让 API Explorer 扩展使用默认值扩展路由模板并使用配置删除 API 版本参数:
services.AddVersionedApiExplorer(options => options.SubstituteApiVersionInUrl = truE);
在提供的示例中,version
路由参数将被删除,路由模板将更新为 "api/v1.0/TableAzureCategory"
,我认为这是您想要的。
以上是大佬教程为你收集整理的ASP.NET Core API 版本全部内容,希望文章能够帮你解决ASP.NET Core API 版本所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。