首页
学习
活动
专区
圈层
工具
发布

ASP.NET Web API路由系统:Web Host下的URL路由

ASP.NET Web API提供了一个独立于执行环境的抽象化的HTTP请求处理管道,而ASP.NET Web API自身的路由系统也不依赖于ASP.NET路由系统,所以它可以采用不同的寄宿方式运行于不同的应用程序中...如果采用Web Host的方式将定义Web API寄宿于一个Web应用之中,其实最终的URL路由还是通过ASP.NET本身的路由系统完成的,那么两个路由系统之间是如何衔接在一起的呢?。...; } 11: } 到此为止,我们基本上可以清楚地了解到ASP.NET Web API路由系统在Web Host情况下是如何利用ASP.NET自身的路有系统实现URL路由的:ASP.NET Web...API路由系统中的HostedHttpRoute对象通过创建ASP.NET路由系统的HttpWebRoute进行基于URL模板的路由解析,但是针对约束的检验依然是利用ASP.NET Web API路由系统中的...Web API在Web Host模式下依然是借助ASP.NET自身的路由系统实现URL路由,那么意味着当我们针对ASP.NET Web API进行路由映射的时候必须在ASP.NET路由系统的全局路由表中添加对一个继承自抽象类

2.1K100

ASP.NET Web API编程——路由

例如 api/{controller}/public/{category}/{id} 设置defaults: new { category = "all" } 路由词典 如果Web API匹配到一个已存在的路由模板...根据获得的控制器(Controller)名查找Web API中的控制器(controller)。如果没有查找到控制器(controller)名或者匹配到了多个,那么返回错误。...Web API框架认为控制器(controller)的操作(Action)具有如下特征: 1)公有类型的实例方法。...Web API框架仅选择那些匹配请求的HTTP方法的操作,原则为: 1)指定了相应特性的操作,例如使用HttpGet特性的操作,只能匹配Get请求。...具体示例见“ASP.NET Web API编程——版本控制” public class CustomHttpControllerSelector : IHttpControllerSelector {

2.4K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ASP.NET Web API路由规则(二)

    默认的规则 在ASP.NET MVC4中 global.asax.cs代码中并无注册默认路由规则的代码 代码如下: public class WebApiApplication : System.Web.HttpApplication...一个是针对API请求的路由规则 另一个是针对普通MVC页面请求的路由规则 请求路径以字符串”api”开头的时候将访问webAPI的函数 (注:至于为什么用MapHttpRoute而不是MapRoute...routeTemplate最后面的id匹配Action中的参数, 这与ASP.NET MVC一致 初步的自定义 那么是不是所有的匹配GET请求的Action都必须以“Get”开头呢 不是的 我们可以用方法特性来标记一个方法属于什么什么请求...[HttpPost] [HttpDelete] [HttpPut] 亦可以使用如下这样的方法特性来区分 [AcceptVerbs("GET")] [AcceptVerbs("GET", "HEAD")...] 另外如果你在Controller中写了一个函数 必须是public的,必须以Get开头 而又不想让客户端以请求到此Action 那么可以使用方法特性 [NonAction] 来标记此方法 进一步自定义

    69730

    Asp.Net Web API 2第五课——Web API路由

    如果你熟悉Asp.Net MVC,Web API的路由与Asp.Net MVC的路由是非常类似的。这主要的区别就是Web API使用的是HTTP方法,而不是URI路径来选择Action。...你也可以在Web API中使用MVC风格的路由。本文不需要有任何Asp.Net MVC的基础。...Routing Tables路由表   在Asp.Net Web API中,一个控制器就是一个处理HTTP请求的类,控制器的public 方法被叫做action方法或者简单的Aciton。...另外要注意,POST请求是失败的,因为该控制器未定义“Post…”方法。 Routing Variations路由变化  上一节描述了ASP.NET Web API基本的路由机制。...public Product FindProduct(id) {} } 允许一个Action对应多个HTTP方法,或者允许除了Get、Put、Post、Delete方法之外的HTTP方法,需要使用AcceptVerbs

    1.8K50

    Asp.Net Web API 2第八课——Web API 2中的属性路由

    前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html   路由就是Web API如何把...Web API支持一种新的路由类型,被叫做属性路由。顾名思义,属性路由是用属性来创建路由。在你的Web API中属性路由可以让你更好的控制URI。你能容易的创建描述资源阶层的URIs。   ...2、启用属性路由   3、添加路由属性   4、路由前缀   5、路由约束   6、可选的URI参数和默认值   7、路由名称   8、路由顺序 1、为什么使用属性路由   第一个Web API版本使用的是基于公约的路由...在该类型的路由中, 你可以定义一个或者多个被参数化字符串的模版。当这个框架接收到一个请求时,它匹配一个URI到路由模版。...为了定义基于公约的路由,需要调用MapHttpRoute 的方法。

    1.4K40

    常用的web方法 web API(二)

    在上一篇《常用的web方法 web API(一)》中我们学习了:绑定事件的几种方式、解绑事件的几种方式、创建元素的几种方式、获取节点的几种方式本篇我们将继续学习:轮播图的js方法、offset系列相关属性...这些和子级元素的left没有关系) 如果父元素和子元素都没有脱离文档流的情况下: offsetLeft:父级元素的margin+父级元素的padding+父级元素的border+子   级元素的margin...---当前元素的父级元素 七、scroll系列(scroll系列中的值都是数字类型) 1.scrollHeight:元素内容实际的高度,没有边框,如果内容不能撑起高度,就是元素的高度 2.scrollWidth...三大系列:-------- 1.offset系列 offsetLeft:获取的是元素距离左边的位置(父级元素margin,父级的padding,     父级元素border,自身的margin-...系列 clientLeft:元素的左边框的宽度 clientTop:元素的上边框的宽度 clientWidth:元素的可视区宽度,没有边框的 clientHeight:元素的可视区高度,没有边框的

    1.3K30

    常用的web方法 web API(一)

    本文主要讲解web API常用的方法,主要内容如下: 1:绑定事件的几种方式 2:解绑事件的几种方式 3:创建元素的几种方式 4:获取节点的几种方式 一、为元素绑定事件三种方式: 1 对象.on+事件类型...事件处理函数); 例子: my$("btn").attachEvent("onclick",function(){}); 为元素解绑事件三种方式 1 对象.on事件类型=null(同一个元素,注册了多个相同的事件...   addEventListener 谷歌和火狐值,IE11支持,IE8不支持        三个参数,第一个参数是没有on的        这里的this是当前的对象    attachEvent...IE8支持,谷歌和火狐不支持,IE11不支持        两个参数,第一个参数有on        这里的this是window对象 最后:用什么方式绑定事件,就用对应的方式解绑事件 二、百度搜索大项目...); //总结:获取节点的代码,谷歌是获取节点,获取元素的代码,谷歌是获取元素 //但是,到了IE8中,获取节点的代码是获取元素,获取元素的代码,不支持

    1K50

    ASP.NET Web API RC版本新特性:Web API的帮助文档制作

    InfoQ上有一篇文章是 使用IAPIExplorer列举ASP.NET Web API,文章针对的版本是ASP.NET Web API Beta版本写,IAPIExplorer已经包含在RC版本里了,...而且发现ASP.NET Web API的HttpConfiguration 的RC版本比Beta版本多了一个属性: public DefaultServices Services { get; internal...使用该API可以完成的工作有: 产生文档 创建机器可读的元数据 创建一个测试客户端 微软员工Yao发表了两篇文章(ASP.NET Web API: Introducing IApiExplorer/ApiExplorer...和ASP.NET Web API: Generating a Web API help page using ApiExplorer)分别用于展示如何使用API打印Web API列表以及如何创建帮助文档...我们可以为我们的Web API 做出很棒的文档了,而且这个接口的设计也是可扩展的。

    1.3K100

    聊聊asp.net中Web Api的使用

    扯淡到这就完了,下来就聊聊今天的主角web api,web api 是mvc4.0之后出现的一种技术吧,他的创建和带来的便利我就不介绍了。这边文章主要聊聊,我对web api开发的一些理解。...要注意的是:[FromBody]只能修饰单个参数,如果是多个参数的话,就要封装成对象进行数据专递了,比如:public void Post([FromBody]string name,[FromBody...话题二:post传递多个不同对象的参数 已经post请求需要使用[FromBody]特性修饰符接收,但是FromBody只能接收单个参数,如果需要传递不同对象的输出就比较麻烦了,新建实体对象成本太大,也不能完全适应适应的类型...& Post) 关键字区分:Get请求或者Post请求,可以用自身的关键字来区分,比如:GetUser(int id)肯定为get请求,Getxxx(params param)等格式为Get请求,post...当然还有一种方式,是没有关键字修饰的方法,比如:FindUser这种情况下,这种请求下默认是Post请求的Get请求就会报405的错。

    2K60

    如何让ASP.NET Web API的Action方法在希望的Culture下执行

    在今天编辑推荐的《Hello Web API系列教程——Web API与国际化》一文中,作者通过自定义的HttpMessageHandler的方式根据请求的Accep-Language报头设置当前线程UI...如果你对ASP.NET Web API的执行机制有足够了解的话,你会发现实际上有很多种解决方案。...不过这些解决方案都不够完美,原因很简单:ASP.NET Web API的整个框架均采用基于Task的并行编程模式,所以每个可扩展组件均可以在不同的线程中执行,这样会导致我们没有办法100%控制目标方法真正执行的线程的...唯一的资源项HelloWorld分别在所在的文件中以英文和中文进行定义,而上面定义的Get方法返回的正式它们的值。 ?...ASP.NET Web API默认使用的HttpActionSelector类型为ApiControllerActionSelector,我们自定义的ExtentedApiControllerActionSelector

    1.6K90

    浅谈web开发中的Get和Post方法get和post的区别

    在http协议中,实际上有八个http方法。但在实际开发中,绝大多数情况我们只会用到两个方法,就是get和post。所以我们来稍微谈谈两种方法的区别,以及何时应该选取何种方法。...get和post的区别 post有一个体! 这个是关键。 ? Paste_Image.png ?...Paste_Image.png get和post都能发送参数,但是利用get的话,对参数数据量有限制,因为参数只能是放在请求行的内容中。而post由于在体中,则没有数据量的限制。...---- ** 所以总结一下,第一方面的区别数据量的大小限制 ** ---- 但不仅仅是数据的大小。 使用get时,参数数据会显示在浏览器的输出栏,这就引发了安全问题。...** get是幂等的,而post不是幂等的**

    2.4K20
    领券