如果一条路由匹配,WebAPI选择controller和action通过如下方式:

1.找到controller,将"controller"赋值给{controller}变量

2.寻找action,web api查看http的请求方式,然后寻找一个以对应请求方式开头的action,如Get请求,需要寻找一个名为Get...的action,这种方式仅支持Get,Post,Put和Delete操作。

除了依据Http请求的方式,还可以显示为action指定http method通过HttpGetHttpPutHttpPost和 HttpDelete这些attribute

public class ProductsController : ApiController
{
[HttpGet]
public Product FindProduct(id) {}
}

为一个action指定多个可以接受的http method

public class ProductsController : ApiController
{
[AcceptVerbs("GET", "HEAD")]
public Product FindProduct(id) { } // WebDAV method
[AcceptVerbs("MKCOL")]
public void MakeCollection() { }
}

对于默认的路由模板,web api使用http method来选择action,我们可以创建一个包含action这个占位符的路由

routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);

可以重写action的名字通过使用ActionName这个attribute【如果使用默认的路由模板,这种修改acting的名字方式也没用了】

public class ProductsController : ApiController
{
[HttpGet]
[ActionName("Thumbnail")]
public HttpResponseMessage GetThumbnailImage(int id); [HttpPost]
[ActionName("Thumbnail")]
public void AddThumbnailImage(int id);
}

NonAction这个attribute可以将method标记为不是一个action,此时即使通过路由匹配到了这个方法。

// Not an action method.
[NonAction]
public string GetPrivateData() { ... }

最新文章

  1. java基础 数组15
  2. python中的urlencode与urldecode
  3. 12-1 上午mysql 基本语句
  4. python 中 sorted() 和 list.sort() 的用法
  5. IOS 上传头像-b
  6. ALV调用的几个标准函数
  7. 国内PaaS概述和EEPlat定位
  8. atittit.表单验证性质的原则和实施,以及选择和定义自己的兼容easyui dsl窗体身份验证规则
  9. UI进阶 即时通讯之XMPP好友列表、添加好友、获取会话内容、简单聊天
  10. Promise原理与实现探究的一种思路
  11. HDFS架构
  12. 修改hosts立刻生效不必重启
  13. 《深入理解JAVA虚拟机》----------第二章 JAVA内存区域与内存溢出异常,笔记(下)
  14. JavaScript之Dom操作【删除当前节点】
  15. Javascript之BOM与DOM讲解
  16. C++设计实现一个不能被继承的类
  17. VirtualAlloc申请进程空间
  18. Regular Expression Matching & Wildcard Matching
  19. VS调试dll
  20. Ubuntu下NAT模式配置静态IP

热门文章

  1. 拉姆达表达式(Lambda Expressions)
  2. CSS 设计模式一 元素
  3. js、java传值编码
  4. 全世界最详细的图形化VMware中linux环境下oracle安装(一)【weber出品必属精品】
  5. C# 程序打包
  6. ZJOI 最小割 CQOI 不同的最小割 (最小割分治)
  7. GDB调试一
  8. org.hibernate.service.jndi.JndiException: Error parsing JNDI name []
  9. jsp 、js和css
  10. mysql 命令行 自动补全