ASP.NET API版本控制
我是ASP.NET的新手,但我希望为即将开始的新API实现一些版本控制.
我甚至不确定我正在寻找什么是可能的,但我正在使用一个非常干净的版本方法使用头变量. 理想情况下,我希望能够在代码结构中包含一个版本文件夹,并在其中包含不同的API版本. 我在Internet上发现了许多标题样本,但它们都要求类在不同的名称空间中,如果我正在完成代码的复制,那么每次复制时都必须重命名所有类. 我正在尝试做什么?或者在处理多个类时是否有更清洁的解决方案? 解决方法
RESTful方式版本有四种基本方法 –
> URI路径此方法采用以下形式: http://api/v2/Tasks/ {}的taskid http://api/Tasks/ {的TaskID}?V = 2 内容类型:application / vnd.taskManagerApp.v2.param.json x-taskManagerApp-version:2 我个人喜欢第一种方法.你可以阅读Mike Wasson’s ASP.NET Web API: Using Namespaces to Version Web APIs. 许多人修改了Mike Wasson的原始资源.我喜欢ASP.NET Web API 2 book by Jamie Kurtz,Brian Wortman中使用的那个. 由于它有太多移动件,我创建了a sample project at GitHub. config.Routes.MapHttpRoute( name: "DefaultApi",routeTemplate: "api/{version}/{controller}",defaults: new { version = "v2" } ); config.Routes.MapHttpRoute( name: "DefaultApiWithId",routeTemplate: "api/{version}/{controller}/{id}",defaults: new { id = RouteParameter.Optional } ); 然后,添加ApiVersionConstraint public class ApiVersionConstraint : IHttpRouteConstraint { public ApiVersionConstraint(string allowedVersion) { AllowedVersion = allowedVersion.ToLowerInvariant(); } public string AllowedVersion { get; private set; } public bool Match(HttpRequestMessage request,IHttpRoute route,string parameterName,IDictionary<string,object> values,HttpRouteDirection routeDirection) { object value; if (values.TryGetValue(parameterName,out value) && value != null) { return AllowedVersion.Equals(value.ToString().ToLowerInvariant()); } return false; } } 用法 您只需将RoutePrefix放在控制器上,就完成了. [RoutePrefix("api/{apiVersion:apiVersionConstraint(v1)}/values")] public class ValuesController : ApiController { // GET api/v1/values [Route("")] public IEnumerable<string> Get() { return new string[] { "v1-value1","v1-value2" }; } // GET api/v1/values/5 [Route("{id}")] public string Get(int id) { return "v1-value-" + id; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 从GridView中的2列动态生成超链接
- asp.net – ADFS 2.0超时以及Freshness Value,TokenLifetim
- asp.net – 如何判断Application_Error中是否有Request / R
- 在ASP.NET Identity 2.0.0-beta1中禁用双因素身份验证
- asp.net – 强制RadComboBox下拉方向
- asp.net-mvc-4 – MVC4如何挂钩OnSessionStart事件?
- asp.net-web-api – SignalR响应覆盖标头
- ASP.NET – Response.Redirect不填充URL引用
- asp.net-mvc-3 – 如何重置/获取razor intellisense和语法高
- Asp XML解析
- asp.net-mvc – DI ninject为控制器而不是视图模
- asp.net – MVC会话到期 – 继续左边
- 如何使用asp .net web api,实体框架和json(代码优
- asp.net – 需要安装Dnx Runtime软件包 有关详细
- asp.net-mvc-3 – System.ComponentModel.DataAn
- asp.net-web-api – 在没有Identity的情况下使用
- asp.net – RequiredFieldValidator不适用于Drop
- ASP.NET Core中的OWASP Top 10 十大风险-SQL注入
- asp.net – NodaTime转换(第2部分).如何?
- asp.net – 如何在Sitecore中以编程方式创建项目