.net – MVC6的VersionedRoute属性实现
我正在尝试在标头中指定版本的REST API上启用版本控制,如“api-version”:2.
根据this tutorial我只需要创建 VersionConstraint:IHttpRouteConstraint 和 VersionedRoute:RouteFactoryAttribute 用法是将[VersionedRoute(“api / controllerName”,2)]属性应用于为特定版本设计的控制器(例如,在这种情况下为版本2). 这一切都很好,但不幸的是,这一切都在MVC5中,我正在使用MVC6.因此,RouteFactoryAttribute和IHttpRouteConstraint不起作用. 我设法找到IRouteConstraint来替换IHttpRouteConstraint(希望它可以工作),但是我找不到RouteFactoryAttribute的替代. 如果有人可以使用MVC 6提供这个样本,或者至少提到正确的类(理想的命名空间),我需要继承? 解决方法
这是您需要的最低工作量.
首先,去there并复制3个以下文件的代码: > 一旦你有了这个,我们将改变VersionRangeValidator的GetVersion方法: public static string GetVersion(HttpRequest request) { if (!string.IsNullOrWhiteSpace(request.Headers["api-version"])) return request.Headers["api-version"]; return "1"; } 这将读取标题并返回API版本.在这种情况下,默认值为v1. 以下是如何在控制器上使用它(或者可以是具有两个操作的相同控制器: [Route("api/data")] public class DataController { [VersionGet("",versionRange: "[1]")] public string GetData() { return "v1 data"; } } [Route("api/data")] public class DataV2Controller { [VersionGet("",versionRange: "[2]")] public string GetData() { return "v2 data"; } } 所以现在你只需要给它正确的标题,这很好.这段代码已经通过jQuery进行了测试: $(document).ready(function(){ $.ajax({url: '/api/Data/',headers: { 'api-version': 1 }}) .then(function(data){ alert(data); }); $.ajax({url: '/api/Data/',headers: { 'api-version': 2 }}) .then(function(data){ alert(data); }); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 带有UpdatePanel Viewstate问题的JQu
- ASP.Net:动态添加到占位符的用户控件无法检索值
- asp.net – 为什么GET方法比POST快?
- asp.net-mvc – Chrome 27中SignalR和跨域请求的
- asp.net – JMeter测试ASP .NET网页有多好?
- asp.net-mvc – 什么使Web应用程序成为触摸板友好
- asp.net – Owin Middleware vs ExceptionHandle
- asp.net – 我们应该为每个开发人员单独的数据库
- 本地iis上的asp.net核心Windows身份验证
- asp.net – 为什么在IIS已经处理请求并发时使用异