.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会话超时的单位?
- asp.net-mvc-5 – 如何让Glimpse与EF6合作?
- asp.net-mvc – 如何将URL参数绑定到具有不同名称的模型属性
- asp.net – System.Web.Optimization是.NET Framework 4.5的
- asp.net – 在MVC5中使用java脚本代码 – 放在哪里
- ASP.NET微信公众号用于给指定OpenId用户发送红包
- asp.net-mvc – 在AppHarbor上获取文件内容
- asp.net – 无法在动态创建的System.Web.UI.WebControl上使
- asp.net-mvc – 出现在MVC4 Razor View中的奇怪的空格
- jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证
- asp.net – Request.ServerVariables [“REMOTE_
- asp.net-mvc – MVC发布IPagedList
- asp-classic – 经典ASP:捕获错误
- asp.net – 太多的Cookie OpenIdConnect.nonce导
- asp.net文件上传解决方案(图片上传、单文件上传
- 如何比较vbscript / ASP中的两个日期?
- asp.net – HttpContext.Current.User.Identity.
- asp.net – 在RedirectToAction调用中传播QueryS
- asp.net-mvc-3 – Mini Profiler不渲染脚本
- asp.net核心 – MVC6是否支持预编译视图?
