原文:http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

属性路由,attribute routing,是web api 2 提供的,而早期的称为约定路由, convention-based routing。在web api 2中,两种可以共存。

以下是原文的思维导图总结:

代码片段:

怎么启用属性路由?

  1. public static class WebApiConfig
  2. {
  3.     public static void Register(HttpConfiguration config)
  4.     {
  5.         // Web API 配置和服务
  6.         // 将 Web API 配置为仅使用不记名令牌身份验证。
  7.         config.SuppressDefaultHostAuthentication();
  8.         config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
  9.  
  10.         // Web API 路由
  11.         config.MapHttpAttributeRoutes();   //此句为关键
  12.  
  13.         config.Routes.MapHttpRoute(
  14.             name: "DefaultApi",
  15.             routeTemplate: "api/{controller}/{id}",
  16.             defaults: new { id = RouteParameter.Optional}
  17.         );
  18.     }
  19. }

通过HTTP METHOD和Route属性一起使用

  1. [Route("api/books")]
  2. [HttpPost]
  3. public HttpResponseMessage CreateBook(Book book) { ... }

路由前缀Attribute,用于简化公共部分

  1. [RoutePrefix("api/books")]
  2. public class BooksController : ApiController
  3. {
  4.     // GET api/books
  5.     [Route("")]
  6.     public IEnumerable<Book> Get() { ... }
  7.  
  8.     // GET api/books/5
  9.     [Route("{id:int}")]
  10.     public Book Get(int id) { ... }
  11.  
  12.     // POST api/books
  13.     [Route("")]
  14.     public HttpResponseMessage Post(Book book) { ... }
  15. }

参数约束

  1. [Route("users/{id:int:min(1)}")]
  2. public User GetUserById(int id) { ... }

可选参数

  1. public class BooksController : ApiController
  2. {
  3.     [Route("api/books/locale/{lcid:int?}")]
  4. //[Route("api/books/locale/{lcid:int=1033}")]
  5.     public IEnumerable<Book> GetBooksByLocale(int lcid = 1033) { ... }
  6. }

为路由指定一个名称

[Route("api/books/{id}", Name="GetBookById")]

// Generate a link to the new book and set the Location header in the response.

string uri = Url.Link("GetBookById", new { id = book.BookId });

WebApi 2:属性路由 [Route()],attribute routing的更多相关文章

  1. Web API 路由 [二] Attribute Routing

    1) 启用.在App_Start - WebApiConfig.cs下 //在Register函数添加如下代码: config.MapHttpAttributeRoutes(); 2) 使用.Cont ...

  2. WebApi(三)-属性路由 自定义访问路径

    启用属性路由: 1.在WebApiConfig中加入如下代码: //属性路由 config.MapHttpAttributeRoutes();

  3. ASP.NET Web API 中 特性路由(Attribute Routing) 的重名问题

    刚才忘了说了,在控制器名重名的情况下,特性路由是不生效的.不然的话就可以利用特性路由解决同名的问题了. 而且这种不生效是真的不生效,不会提示任何错误,重名或者什么的,直接会报告404,所以也是个坑.

  4. MVC5 属性路由

    属性路由(attribute routing)是最新被引进到MVC5中的,它和传统路由共同组成了mvc5中的两种主要路由. 1. 高质量的url应该满足以下几点 域名便于记忆和拼写 简短 便于输入 可 ...

  5. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【外传】——Attribute Routing

    系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 题外话:由于这个技术点是新学的,并不属于原系列,但借助了原系列的项目背景,故命名外传系列,以后也可 ...

  6. WebApi2官网学习记录---Attribute Routing

    从WebApi 1迁移到WebAPI 2要改变配置代码如下: WebApi 1: protected void Application_Start() { // WARNING - Not compa ...

  7. Attribute Routing

    Attribute Routing 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 题外话:由于这个技术点是新学的,并不属于原系列,但借助了原系列 ...

  8. Web API中的路由(二)——属性路由

    一.属性路由的概念 路由让webapi将一个uri匹配到对应的action,Web API 2支持一种新类型的路由:属性路由.顾名思义,属性路由使用属性来定义路由.通过属性路由,我们可以更好地控制We ...

  9. ASP.NET Web API 2中的属性路由(Attribute Routing)

    如何启用属性路由并描述属性路由的各种选项? Why Attribute Routing? Web API的第一个版本使用基于约定的路由.在这种类型的路由中,您可以定义一个或多个路由模板,这些模板基本上 ...

随机推荐

  1. 解决svn迁移过程中出现:SVN Error: is not the same repository as的问题

    一.背景 由于公司业务的需要,新购买了一批机器,那么面临着的就是svn等一系列东西进行迁移的问题,在svn迁移以后,本地的svn代码在切换时出现了SVN Error: 旧服务器地址 is not th ...

  2. Ubuntu(Linux)使用Eclipse搭建C/C++编译环境

    转自:http://www.cppblog.com/kangnixi/archive/2010/02/10/107636.html 首先是安装Eclipse,方法有两种:       第一种是通过Ub ...

  3. Git 、 Cocoapods常用命令

    Git常用命令 1.添加文件   git  add  xxx 2.提交更新到本地  git commit   -m  'local-repo' 3.提交更新    git  push master  ...

  4. XSLT教程

    XSL 指扩展样式表语言(EXtensible Stylesheet Language), 它是一个 XML 文档的样式表语言. XSLT 指 XSL 转换.即使用 XSLT 将 XML 文档转换为其 ...

  5. 常用shell命令操作

    1.找出系统中所有的*.c 和*.h 文件 (-o 或者) $find / -name "*.cpp" -o -name "*.h" 2.设定 eth0 的 I ...

  6. NYOJ题目806HEIHEI的心情

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtMAAANRCAIAAACumacBAAAgAElEQVR4nOzdrXLrOrjG8XMT5b2Q4l

  7. 20145206《Java程序设计》实验三实验报告

    20145206<Java程序设计>实验三实验报告 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运 ...

  8. 杂物 python (一)

    python 是一门语言,有各种不同的实现.CPython 即用c语言实现Python及其解释器.

  9. 如何通过阅读C标准来解决C语言语法问题

    有时候必须非常专注地阅读ANSI C标准才能找到某个问题的答案.一位销售工程师把下面这段代码作为测试用例发给Sun的编译小组. foo(const char **p) {} int main(int ...

  10. [UI]实用案例--Shape绘制实用圆圈

    Android允许通过xml定义资源,常见的事string,id,integer,dimen等,也可以定义一些图片资源,比如用来做几何的矢量图就非常好用,其中有许多的细节问题,具体需求可以再结合goo ...