Web API 和SignalR都是在服务层。

If you are familiar with ASP.NET MVC, Web API routing is very similar to MVC routing.

The main difference is that Web API uses the HTTP method, not the URI path, to select the action.(web api和mvc路由最主要的区别是,mvc是使用URI路径来选择action的,而web api 则是使用http方法来选择action的。)

You can also use MVC-style routing in Web API. This article does not assume any knowledge of ASP.NET MVC.

参考官网:http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api

1.路由表

1.1默认配置

默认的路由映射,所以,调用api的时候,必须以api开头

  1. routes.MapHttpRoute(
  2.     name: "API Default",
  3.     routeTemplate: "api/{controller}/{id}",
  4.     defaults: new { id = RouteParameter.Optional }
  5. );

eg:

  • /api/contacts
  • /api/contacts/1
  • /api/products/gizmo1

而 /contacts/1就不会成功。

1.2默认约定

默认的约定,以Get,Delete,Put,Post这些开头的方法:

  1. public class ProductsController : ApiController
  2. {
  3.     public void GetAllProducts() { }
  4.     public IEnumerable<Product> GetProductById(int id) { }
  5.     public HttpResponseMessage DeleteProduct(int id){ }
  6. }

HTTP Method

URI Path

Action

Parameter

GET

api/products

GetAllProducts

(none)

GET

api/products/4

GetProductById

DELETE

api/products/4

DeleteProduct

POST

api/products

(no match)

2.路由变量

2.1 Http方法

使用HttpGet, HttpPut, HttpPost, or HttpDelete 来进行标记方法。

也可以使用[AcceptVerbs("GET", "HEAD")]来标记多个选择。

2.2使用ActionName来路由

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

则以上的配置可以支持两种:

One is

  1. public class ProductsController : ApiController
  2. {
  3.     [HttpGet]
  4.     public string Details(int id);
  5. }

The other is:(api/products/thumbnail/id

  1. public class ProductsController : ApiController
  2. {
  3.     [HttpGet]
  4.     [ActionName("Thumbnail")]
  5.     public HttpResponseMessage GetThumbnailImage(int id);
  6.  
  7.     [HttpPost]
  8.     [ActionName("Thumbnail")]
  9.     public void AddThumbnailImage(int id);
  10. }

2.3非Action

使用[NonAction] 标记方法。

web api :Routing in ASP.NET Web API的更多相关文章

  1. Routing in ASP.NET Web API

    Why is HttpGet required only for some actions? https://stackoverflow.com/questions/28068868/why-is-h ...

  2. Implement JSON Web Tokens Authentication in ASP.NET Web API and Identity 2.1 Part 3 (by TAISEER)

    http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-api-an ...

  3. Routing in ASP.NET Web API和配置文件的设定读取

    Routing Tables In ASP.NET Web API, a controller is a class that handles HTTP requests. The public me ...

  4. ASP.NET Web API 框架研究 ASP.NET Web API 路由

    ASP.NET Web API 核心框架是一个独立的.抽象的消息处理管道,ASP.NET Web API有自己独立的路由系统,是消息处理管道的组成部分,其与ASP.NET路由系统有类似的设计,都能找到 ...

  5. 【转】Encrypt ConnectionString in Web.Config 【加密ASP.NET web.config数据库链接字串】

    原文链接:https://www.codeproject.com/Tips/795135/Encrypt-ConnectionString-in-Web-Config web.config中一般会存放 ...

  6. Create a REST API with Attribute Routing in ASP.NET Web API 2

    原文:http://www.asp.net/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute- ...

  7. Adding the Test API in The ASP.NET Web API Help Page

    1.通过NuGet引用Web API Test Client 引用玩该DLL会生成如下文件: 这里面就是我们的帮助文档界面 2.在项目属性中进行如下设置,勾选XMl文档文件,并设置路径 3.在项目的A ...

  8. ASP.NET Web API中的Routing(路由)

    [译]Routing in ASP.NET Web API 单击此处查看原文 本文阐述了ASP.NET Web API是如何将HTTP requests路由到controllers的. 如果你对ASP ...

  9. ASP.NET Web API 路由对象介绍

    ASP.NET Web API 路由对象介绍 前言 在ASP.NET.ASP.NET MVC和ASP.NET Web API这些框架中都会发现有路由的身影,它们的原理都差不多,只不过在不同的环境下作了 ...

随机推荐

  1. hosts文件修改之后立刻刷新

    最近因为项目的需要,总是修改hosts文件,每次修改之后都要重启浏览器,总结下刷新的方式 window下,hosts文件位置:C:\windows\system32\drivers\etc\hosts ...

  2. JAVA作业02

    一,      课堂练习 (一)构造方法 1,源代码 public class Test{ public static void main(String[] args){ Foo obj1=new F ...

  3. 线性代数 -- Linear Algebra with Applications

    @.如果线性方程组无解,则称该方程组是不相容的(inconsistent). @.如果线性方程组至少存在一个解,则称该方程组是相容的(consistent). @.等价方程组(equivalent s ...

  4. MVC - 16.MVC过滤器

          filter n. 滤波器:[化工] 过滤器:筛选:滤光器 vt. 过滤:渗透:用过滤法除去   1.过滤器表   过滤器类型 接口 默认实现 描述 Action IActionFilte ...

  5. JAVA基础学习之IP简述使用、反射、正则表达式操作、网络爬虫、可变参数、了解和入门注解的应用、使用Eclipse的Debug功能(7)

    1.IP简述使用//获取本地主机ip地址对象.InetAddress ip = InetAddress.getLocalHost();//获取其他主机的ip地址对象.ip = InetAddress. ...

  6. MVC授权认证

    处于安全性考虑,MVC可以完成授权认证,授权认证的方式如下: 1.配置Config文件,设置登录页面: <authentication mode="Forms"> &l ...

  7. 攻城狮在路上(叁)Linux(二十七)--- 压缩与打包之常见的压缩命令

    前面讲到,linux中的后缀名没有特殊的意义,一般是作为不同文件类型的标识而已.下面是与打包.压缩相关的后缀名介绍: *.z:compress程序压缩文件 *.gz:gzip程序压缩文件 *.bz2: ...

  8. <转>JDBC获取DB元数据

    原文链接:http://jiauwu.iteye.com/blog/1307617 package com.util.jdbc; import java.sql.Connection; import ...

  9. PowerDesigner连接Oracle数据库生成数据模型【本地连接方式】

    步骤1:选择数据库     步骤2:选择要连接的数据库的版本   步骤3:新建数据库连接   步骤4:提供3种连接数据库方式(在此选择第3种),并且点击配置按钮,进行下一步   步骤5:点击此按钮,填 ...

  10. 2-05使用SQL语句创建数据库2

    使用SQL语句创建多个数据文件和日志文件: USE master--指向当前使用的数据库 GO--批处理的标志 CREATE DATABASE E_Market--创建E_market数据库 ON P ...