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

原文地址: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

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


你可能感兴趣的:(ASP.Net Web API 中基于属性的路由使用)