应用是演进的,通常我们用版本号来管理。api也是演进的,这篇博文就说说asp.netwebapi演进时的版本管理。
asp.netwebapi的版本管理是通过微软的一个包来实现的。
Install-PackageMicrosoft.AspNetCore.Mvc.Versioning
通过url参数:api/order/api-version=2.0
在startup中注入ApiVersion
publicvoidConfigureServices(IServiceCollectionservices){services.AddApiVersioning();services.AddControllers();}
在ProductController中标注版本特性
usingMicrosoft.AspNetCore.Mvc;usingMicrosoft.Extensions.Logging;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;namespaceAPIVersionDemo.Controllers{[ApiController][Route("api/[controller]")][ApiVersion("1.0",Deprecated=true)][ApiVersion("2.0")]publicclassProductController:ControllerBase{privatereadonlyILoggerProductController_logger;publicProductController(ILoggerProductControllerlogger){_logger=logger;}//1.0的api[HttpGet("{id}")]publicProductQueryProduct([FromRoute]intid){_logger.LogInformation("v1.0查询产品");returnnewProduct(){ID=id,Name="A物品",Price=.20m};}//2.0的api[HttpGet("{id}")][MapToApiVersion("2.0")]publicProductQueryProductv2([FromRoute]intid){_logger.LogInformation("v2.0查询产品");returnnewProduct2(){ID=id,Name="A物品",Price=.20m,Description="产自山西"};}}///summary///1.0的产品类////summarypublicclassProduct{publicintID{get;set;}publicstringName{get;set;}publicdecimalPrice{get;set;}}///summary///2.0的产品类////summarypublicclassProduct2:Product{publicstringDescription{get;set;}}}通过
转载请注明:http://www.0431gb208.com/sjsbszl/363.html