首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET Web API路由系统:路由系统几个核心类型

虽然ASP.NET Web API框架采用与ASP.NET MVC框架类似的管道式设计,但是ASP.NET Web API管道核心部分(定义在程序集System.Web.Http.dll中)已经移除了对...也就是说,ASP.NET Web API核心框架URL路由系统与ASP.NET本身路由系统是相对独立。...ASP.NET路由系统通过RouteData对象来封装解析出来路由数据,其核心自然是通过Values和DataTokens属性封装路由变量。...另一个同样通过字典类型表示只读属性DataTokens,我们应该不会感到陌生,至于通过制度属性Handler返回HttpMessageHandler对象是组成ASP.NET Web API消息处理管道核心...Web API管道HttpConfiguration对象,这依赖于我们对Web API寄宿方式,这并没有定义在ASP.NET Web API核心框架之中。

9.5K110

ASP.NET Core路由路由系统核心对象——Router

ASP.NET Core应用中路由机制实现在RouterMiddleware中间件中,它目的在于通过路由解析为请求找到一个匹配处理器,同时将请求携带数据以路由参数形式解析出来供后续请求处理流程使用...,并在成功匹配情况下解析出路由参数并指定请求处理器之外,Router路由解析还为另一个领用场景服务,那就是根据自身路由规则和提供参数生成一个URL。...二、RouteContext 接下来我们来了解一下整个路由解析涉及到了几个核心类型,首先来看看为整个路由解析提供执行上下文这个RouteContext类型。...如上图所示,一个RouteContext上下文包含三个核心对象,一个是代表当前请求上下文HttpContext对象,对应属性是HttpContext。...,为了全局对象造成“数据污染”问题,一种类型与“快照”策略被应用到RouteData上。

1.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

ASP.NET Core路由路由系统核心对象——Router

ASP.NET Core应用中路由机制实现在RouterMiddleware中间件中,它目的在于通过路由解析为请求找到一个匹配处理器,同时将请求携带数据以路由参数形式解析出来供后续请求处理流程使用...[本文已经同步到《ASP.NET Core框架揭秘》之中] 目录 一、IRouter接口 二、RouteContext 三、RouteData 四、Route 五、RouteHandler 总结 一...二、RouteContext 接下来我们来了解一下整个路由解析涉及到了几个核心类型,首先来看看为整个路由解析提供执行上下文这个RouteContext类型。...如上图所示,一个RouteContext上下文包含三个核心对象,一个是代表当前请求上下文HttpContext对象,对应属性是HttpContext。...,为了全局对象造成“数据污染”问题,一种类型与“快照”策略被应用到RouteData上。

1.9K40

ASP.NET Web API编程——路由

路由过程大致分为三个阶段: 1)请求URI匹配已存在路由模板 2)选择控制器 3)选择操作 1匹配已存在路由模板 路由模板 在WebApiConfig.Register方法中定义路由,例如模板默认生成路由为...例如 api/{controller}/public/{category}/{id} 设置defaults: new { category = "all" } 路由词典 如果Web API匹配到一个已存在路由模板...对于api/root/{id} 务必对defaults设置控制器(controller)默认值,,不然无法执行路由过程。可以不设置操作(Action)。...具体示例见“ASP.NET Web API编程——版本控制” public class CustomHttpControllerSelector : IHttpControllerSelector {...来标识路由值为可选,同时必须为操作参数设置默认值。 例: [Route("api/v1/user/{id:int?}")]

1.7K80

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

默认规则 在ASP.NET MVC4中 global.asax.cs代码中并无注册默认路由规则代码 代码如下: public class WebApiApplication : System.Web.HttpApplication...RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } } 那么默认路由规则是在哪里注册呢...一个是针对API请求路由规则 另一个是针对普通MVC页面请求路由规则 请求路径以字符串”api”开头时候将访问webAPI函数 (注:至于为什么用MapHttpRoute而不是MapRoute...;为什么用routeTemplate而不是用url我们再以后章节介绍) 因为routeTemplate中有了{controller} 所以针对api请求可以自动映射到指定controller类 那么是怎么找到合适...routeTemplate最后面的id匹配Action中参数, 这与ASP.NET MVC一致 初步自定义 那么是不是所有的匹配GET请求Action都必须以“Get”开头呢 不是的 我们可以用方法特性来标记一个方法属于什么什么请求

47330

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

ASP.NET Web API提供了一个独立于执行环境抽象化HTTP请求处理管道,而ASP.NET Web API自身路由系统也不依赖于ASP.NET路由系统,所以它可以采用不同寄宿方式运行于不同应用程序中...实现在HostedHttpRoute之中核心路由功能基本上是通过这个Route对象完成,所以我们才说Web Host下ASP.NET Web APIURL路由最终还是利用ASP.NET自身路由系统实现...Web API路由系统在Web Host情况下是如何利用ASP.NET自身路有系统实现URL路由ASP.NET Web API路由系统中HostedHttpRoute对象通过创建ASP.NET...Web API在Web Host模式下依然是借助ASP.NET自身路由系统实现URL路由,那么意味着当我们针对ASP.NET Web API进行路由映射时候必须在ASP.NET路由系统全局路由表中添加对一个继承自抽象类...通过前面针对ASP.NET路由实现原理介绍,我们知道整个路由系统核心是一个叫做UrlRoutingModuleHttpModule,它通过注册HttpApplicationPostResolveRequestCache

1.6K100

ASP.NET路由系统:路由映射

路由注册核心就是在全局路由表中添加一个Route对象,该对象绝大部分属性都可以通过MapPageRoute方法相关参数来指定。接下来我们通过实现演示方式来说明路由注册一些细节问题。...从界面上输出结果我们不难看出,虽然请求地址完全满足我们注册路由对象URL模板模式,但是ASP.NET并没有对请求地址实施路由。...,但这会代码一些问题。...这是一个不得不解决问题,因为它是我们无法正常地在页面中引用向javascript和css文件。我们可以通过调用RouteCollectionIgore方法来注册一些需要让路由系统忽略URL模板。...路由系统:URL与物理文件分离 ASP.NET路由系统:路由映射 ASP.NET路由系统:根据路由规则生成URL

2.2K90

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版本使用是基于公约路由...API版本控制  在下面的例子中,"api/v1/products"相对于"api/v2/products"将被路由到不同控制器。...本文参考链接http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

84940

消息队列RabbitMQ核心:交换机(路由、主题、发布订阅)

文章目录 一、交换机概述 临时队列 绑定(bindings) 二、发布订阅(fanout) 代码实战 三、路由(direct) 代码实战 四、主题(topic) 代码实战 ---- 上篇文章:消息队列...RabbitMQ核心:简单(Hello World)模式、队列(Work Queues)模式、发布确认模式 ---- 在上一篇学习中,使用创建了一个工作队列,我们假设是工作队列背后,每个任务都恰好交给一个消费者...答案是可以,此时就要引出交换机概念,上面架构图演变如下: 一、交换机概述 RabbitMQ 消息传递模型核心思想是: 生产者生产消息从不会直接发送到队列。...交换机类型总共有以下几种: 直接 / 路由(direct), 主题(topic) ,标题(headers) , 扇出 / 发布订阅(fanout) 无名交换机 之前使用是默认交换,通过空字符串(“”...三、路由(direct) 队列只对它绑定交换机消息感兴趣。

65520

ASP.NET Core路由:内联路由约束检验

一、预定义RouteConstraint 路由系统定义了一系列原生RouteConstraint类型,我们可以使用它们解决很多常见约束问题,即使现有的RouteConstraint类型无法满足某些特殊约束需求...当我们在一个ASP.NET Core应用中使用路由功能时候,除了需要注册这个RouterMiddleware中间件之外,一般还需要调用ServiceCollection扩展方法AddRouting注册一些与路由相关服务...不过在这之前我们不妨先来看看使用这个约束最终实现效果。在本例中我们创建了一个提供基于不同语言资源Web API,简单起见,我们仅仅提供针对相应Culture文本数据。...---- ASP.NET Core路由[1]:注册URL模式与HttpHandler映射关系 ASP.NET Core路由[2]:路由系统核心对象——Router ASP.NET Core路由...[3]:Router创建者——RouteBuilder ASP.NET Core路由[4]:来认识一下实现路由RouterMiddleware中间件 ASP.NET Core路由[5]:内联路由约束检验

1.2K60

ASP.NET路由系统:根据路由规则生成URL

前面我们已经提到过,ASP.NET 路由系统主要具有两个方面的应用,其一就是通过注册URL模板与物理文件路径匹配实现请求地址和物理地址分离;另一个则是通过注册路由规测生成一个相应URL。...,会遍历整个集合每个路由对象并调用其GetVirtualPath方法,如果返回VirtualPathData不会Null则直接将其作为返回值;否则(找不到匹配路由对象)返回Null。...如果在调用GetVirtualPath确定了具体使用路由对象,则直接调用该路由对象GetVirtualPath方法并返回其执行结果。...路由对象针对GetVirtualPath方法而进行路由匹配只要求URL模板中定义变量值都能被提供,而这些变量值具有三种来源,分别是路由对象定义默认变量值、指定RequestContextRouteData...ASP.NET路由系统:URL与物理文件分离 ASP.NET路由系统:路由映射 ASP.NET路由系统:根据路由规则生成URL

1.3K80

API设计核心原则

“真正好名称能够解决问题并防止误解,因为正确名称能清晰地表达某个东西是什么,” SoftIron 首席科学家 Harry Richardson 告诉 The New Stack。...“你需要对 API 设计进行比任何其他事情都更多思考,” Richardson 表示,“因为一旦构建完成,你就不能对其进行更改。” 第二个问题涉及封装和实现细节泄漏。...与软件开发任何其他方面一样,认为自己可以将自己关在房间里孤立地工作在 API 上是一个错误。如果你这样做,你就会冒着在设计上投入过多,即使出现问题也是如此风险。...文档是最被低估方面之一,不仅在 API 设计中如此,在计算机领域也是如此。技术撰写人员经常被低估和低薪,文档被视为最好是事后再考虑问题,这体现在“代码就是文档”最大化原则上。...“你希望它列出每个可能返回错误代码以及在什么情况下,” Richardson 强调道。 花时间完善和修订文档,并避免常见问题,比如使用不容易理解缩写词。 在开发 API 过程中继续编写代码。

6810

ASP.NET Core 6框架揭秘实例演示:利用路由开发REST API

ASP.NET路由是通过EndpointRoutingMiddleware和EndpointMiddleware这两个中间件协作完成,它们在ASP.NET平台上具有举足轻重地位,MVC和gRPC框架...,DaprActor和发布订阅编程模式都建立在路由系统之上。...Minimal API更是将提升到了前所未有的高度,是我们直接在路由系统基础上定义REST API。...(本篇提供实例已经汇总到《ASP.NET Core 6框架揭秘-实例演示版》) [S2001]注册路由终结点 (源代码) [S2002]以内联方式设置路由参数约束(源代码) [S2003]定义可缺省路由参数...ASP.NET为常用验证规则定义了相应约束表达式,我们可以根据需要为某个路由参数指定一个或者多个约束表达式。

71920

AngularJS API:模块 API、指令 API、服务 API、过滤器 API路由 API

AngularJS 是一款流行前端 JavaScript 框架,提供了丰富 API 接口,用于实现前端应用各种功能。...本文将详细介绍 AngularJS API,包括模块 API、指令 API、服务 API、过滤器 API路由 API 等内容,帮助开发者充分了解和熟练运用 AngularJS 各项功能。1....AngularJS 路由 APIAngularJS 路由(Routing)功能用于实现单页应用中页面跳转和导航。...(1) $routeProvider$routeProvider 是 AngularJS 中配置路由服务。通过配置路由规则,我们可以指定不同 URL 对应视图和控制器。...总结本文详细介绍了 AngularJS API 接口,包括模块 API、指令 API、服务 API、过滤器 API路由 API 等。

21670

laravel中api路由前缀

这里面的路由会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。 定义在 routes/api.php 中路由都是无状态,并且被分配了 api 中间件组。...大多数应用构建,都是以在 routes/web.php 文件定义路由开始。可以通过在浏览器中输入定义路由 URL 来访问 routes/web.php 中定义路由。...('/user', [UserController::class, 'index']); 定义在 routes/api.php 文件中路由是被 RouteServiceProvider 嵌套在一个路由组内...在这个路由组中,将自动应用 /api URI 前缀,所以你无需手动将其应用于文件中每个路由。你可以通过修改 RouteServiceProvider 类来修改前缀和其他路由组选项。...在app\Providers\RouteServiceProvider.php 中修改API路由前缀Route::prefix('api') ?

3.1K10

Node.js v17.5.0 发布核心增加 fetch API

Node.js v17.5.0 版本于本周四(2022-02-10)发布,其显著变化为: 试验性支持 fetch() API Stream 新增了 find()、toArray()、forEach()...、some()、every() 方法 取消标记 esm json 模块 NPM 更新至 8.4.1 node-api 添加 node_api_symbol_for() 方法 fetch API 支持 Node.js...核心引入 fetch API 是一个令人兴奋功能,目前在 v17.5.0 版本为试验性支持,在今后 LTS 版本中如果正式支持了,就不需要在依赖第三方 HTTP 请求库了。...Fetch API 提供了 WHATWG 标准接口获取资源,这是一个基于 Promise HTTP 客户端,可以用来简化 HTTP 请求,在浏览器环境已支持,浏览器环境兼容性实现参考 Web/API...Fetch API 主要包含以下四个接口: fetch():该方法是最常用,用于发送请求。

1.5K30

Node 中核心API使用

ASP.NET=HTML+C#:易用,适合Windows平台。 Node.js=HTML+"JS":性能好,适合于服务器端IO密集型项目,不适合CPU密集型项目。 2. ...Node.js概述 Node.js不是JS,是一种服务器端技术,它竞争对手是PHP/JSP/ASP.NET,历史上第一次有一种语言可以通吃前后台! 1. 单线程逻辑处理; 2. 非阻塞; 3....脚本模式,正式项目中使用方式; 把要执行所有语句编写一个文本文件中,一次性提交给node解释器执行,在脚本模式下,声明全局变量不是global成员,避免了全局对象污染。...Node.js官方提供原生模块-fs文件模块 该模块提供了对文件系统中文件/目录进行增删改查、读写功能。...数据库连接池正是针对这个问题提出来,它会负责分配、管理和释放数据库连接,允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个连接,释放空闲时间超过最大允许空闲时间数据库连接,以避免因为连接未释放而引起数据库连接遗漏

1.9K20
领券