ASP.Net Web API 中基于属性的路由使用

来源:互联网 发布:aspen优化 编辑:程序博客网 时间:2024/05/17 06:18

原文地址:http://www.intstrings.com/ramivemula/articles/attribute-based-routing-in-asp-net-web-api/


我们大多数已经知道我们WebApiConfig 文件配置Web API 传统路由概念种方法解决了大多数基本路由问题但是自定义路由细粒度控制灵活性进行限制属性基于路由最受欢迎nuget 可以灵活管理控制器/行动一级路线教程中我们打算我们如何得到基本属性基于路由作品

在我们进入一些代码之前第一次分享关于基于属性路由社区贡献 — — http://weblogs.asp.net/scottgu/archive/2013/04/19/asp-net-web-api-cors-support-and-attribute-based-routing-improvements.aspx ScottGu 的最近博客文章让我们感谢蒂姆 · 麦考尔 — — http://attributerouting.net/ 我们提供一个美丽特征

让我们开始 Web API 模板创建一个ASP.Net MVC4 项目右键单击项目选择管理 Nuget 程序包搜索"AttributeRouting"结果安装 AttributeRouting (ASP.NET Web API)

下面为一些代码示例
using AttributeRouting;using AttributeRouting.Web.Http;using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Http;using System.Web.Http;namespace MvcApplication1.Controllers{
// http://xxx/Products/GetEverything    [RoutePrefix("Products")]    public class ValuesController : ApiController    {        [GET("GetEverything")]        public IEnumerable<string> Get()        {            return new string[] { "value1", "value2" };        }
// http://xxx/Products/GetProduct/1        [GET("GetProduct/{id}")]        public string Get(string id)        {            return "value1";        }    }}
这样能更方便的定义路由级别,如下的一些示例
[GET("GetProductByName/{name=Merc}")]
public string GetByName(string name)
{
     return name;
}
[GET("GetProductByName/{name:alpha:length(4)=Merc}")]
public string GetByName(string name){ return name;}       











[GET("GetEverything", ActionPrecedence = 1)][GET("Index")]public IEnumerable<string> Get(){      return new string[] { "value1", "value2" };}
[GET("GetProduct/{id}?{x}")]public string Get(string id){      return String.Format("Passed Id : {0}, Passed Querystring: {1}",             id,             System.Web.HttpContext.Current.Request.QueryString["x"].ToString());}


http://xxx/my/Products/2?3
[RouteArea("My")][RoutePrefix("Products")]public class ValuesController : ApiController

以上为一部分示例,可以看到,这样相当于自定义路径。

0 0
原创粉丝点击