展开

关键词

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

方法的参数分别是代表当前请求上下文的HttpContext、当前Router对象、约束约束字典中的Key(对于针对路由参数的约束,这个Key就是路由参数的名称)、从请求URL解析出来的所有路由参数路由方向 如下面的代码片断所示,RangeRouteConstraint类型具有两个长整型的只读属性MaxMin,它们分别表示约束范围的上下限。 Min表示的数值范围内。 也正是因为是一个自定义的路由约束,我们必须将内联约束表达式名称CultureConstraint类型之间的应用,我们在调用ConfigureServices方法中将这样的映射添加到注册的RouteOptions 如果这样的路由参数存在,它会据此创建一个CultureInfo对象并将其作为当前线程的CultureCultureInfo属性。

56660

ASP.NET MVC 路由详解

其中{controller}{action}不能修改 defaults 默认值 路由规则 重点说下路由规则,路由规则中{controller}{action}不能修改,因为这是MVC的默认字段。 路由规则的id字段,或者其他自定义字段,可以用于接收参数,便于请求的处理参数的传递。 因为路由规则可以方便的传递接受数据,因此在MVC中基本不适用GET方式来请求数据,一般使用路由匹配POST提交两种方式。 通常来讲,一个URL按照如下规则: localhost/{栏目}/{页面} constraints - 约束 constraints 约束参数默认是没有的,但是可以自行添加: 设置路由规则的约束 类型为 拓展 使用 RouteDebug 进行路由调试 总结 路由规则可以注册多条 路由规则的名称不能重复 路由规则有顺序,并且按照顺序进行匹配 子频道的路由规则配置应放在靠前 路由规则可以设置约束 路由规则匹配的控制器可以设置命名空间约束

51120
  • 广告
    关闭

    一大波轻量级工具升级重磅来袭

    代码传递思想,技术创造回响!Techo Day热忱欢迎每一位开发者的参与!

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

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

    2、启用属性路由   3、添加路由属性   4、路由前缀   5、路由约束   6、可选的URI参数默认值   7、路由名称   8、路由顺序 1、为什么使用属性路由   第一个Web API版本使用的是基于公约的路由  路由约束可以让你在路由模版中限制参数被匹配。 6、可选的URI参数默认值  你可以通过添加一个问号标记路由参数使成为一个可选的URI参数。如果一个路由参数是可选的,你必须为这个方法参数定义一个默认值。 对于同一个动作名称如果控制器有多重的属性路由,一个后缀将被添加。例如,“Books.GetBook1" "Books.GetBook2"。 不带有约束路由参数。   带有约束的通配符路由参数。   不带有约束的通配符路由参数。

    30340

    ASP.NET MVC5高级编程 ——(5)路由

    ASP.NET MVC5中有:特性路由传统路由。 ASP.NET MVC5中的路由机制图解: ? 因为传入的参数存在二义性,1也可以解释为字符串,因此需要添加int约束路由约束是一种条件,只有满足该条件时,路由才能匹配。这种约束叫做内联约束。 内联路由约束为控制路由何时匹配提供了精细的控制。 路由约束: 目的:实现对路由片段的值进行约束 方法:通过正则表达式、将一条路由约束到一组指定的值、约束使用HTTP方法的路由。 对磁盘文件的请求进行路由: 并不是MVC应用程序的所有请求都针对控制器动作,MVC路由提供对内容进行服务。 (4) 通过正则表达式等方法可实现自定义路由约束

    46340

    .NET Core开发实战(第25课:路由与终结点:如何规划好你的Web API)--学习笔记(上)

    25 | 路由与终结点:如何规划好你的Web API 路由系统在 ASP.NET MVC 框架里面就已经存在了,在 ASP.NET Core 框架里面进行了改进 路由系统的核心作用是指 URL 应用程序 Controller 的对应关系的一种映射 这个映射关系实际上有两种作用: 1、把 URL 映射到对应的 Controller 对应的 action 上面去 2、根据 Controller action 可以用来作为 MVC 的页面 Web 配置 现在用的比较多的前后端分离的架构,定义 Web API 的时候使用 RouteAttribute 方式去做 在定义路由,注册路由的过程中间,有一个重要的特性就是路由约束 ,是指路由如何匹配 有以下简单的几种约束: 1、类型约束 2、范围约束 3、正则表达式 4、是否必选 5、自定义 IRouteConstraint 另外路由系统提供了两个关键的类,用来反向根据路由的信息生产 第一个接口是我们实现的自定义约束,点击 try it out 后输入参数 ? 第二个接口约束最大为20 输入5,执行 ? 可以看到响应码是 200 输入25,执行 ?

    16510

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

    目录 一、变量默认值 二、约束 三、对现成文件的路由 四、注册路由忽略地址 五、直接添加路由对象 我们已前面介绍的关于获取天气预报信息的路由地址 该页面主体部分的HTML如下所示,我们不仅将基于当前页面的RouteData对象的RouteRouteHandler属性类型输出来,还将存储于ValuesDataTokens字典的变量显示出来。 如果请求地址中的内容不能符合相关变量段的约束条件,则意味着对应的路由对象与之不匹配。 如下面的代码片断所示,IRouteConstraint具有唯一的方法Match用于定义约束的逻辑,该方法的5个参数分别表示:HTTP上下文、当前路由对象、约束的名称(存储约束对象的RouteValueDictionary 具体来说,当调用路由对象的GetRouteDataGetVirtualPathData方法时,枚举值IncomingRequestUrlGeneration分别被采用。

    39390

    理解ASP.NET Core - 路由(Routing)

    使用复杂段,相比普通路由模板来说,会造成更加昂贵的性能影响 路由约束 通过路由约束,可以在路由匹配过程中,检查URL是否是可接受的。另外,路由约束一般是用来消除路由歧义,而不是用来进行输入验证的。 实现上,当Http请求到达时,路由参数该参数的约束名会传递给IInlineConstraintResolver服务,IInlineConstraintResolver服务会负责创建IRouteConstraint ,会造成更加昂贵的性能影响 自定义路由约束 先说一句,自定义路由约束很少会用到,在你决定要自定义路由约束之前,先想想是否有其他更好的替代方案,如使用模型绑定。 通过实现IRouteConstraint接口来创建自定义路由约束,该接口仅有一个Match方法,用于验证路由参数是否满足约束,返回true表示满足约束,false则表示不满足约束。 它是根据以下规则来确定的: 越具体的模板优先级越高 包含更多匹配段的模板更具体 含有文本的段比参数段更具体 具有约束的参数段比没有约束的参数段更具体 复杂段具有约束的段同样具体 catch-all参数段是最不具体的

    13940

    ASP.NET Web API编程——路由

    首先匹配apiroot,然后匹配默认的控制器(controller),最后占位符id匹配操作(Action)接收的参数。 2)如果路由词典中包含关于操作(Action)的键值对,移除链表中名称值不匹配的操作(Action)。 3)匹配操作(Action)参数与URI。 RouteRoutePrefix特性均支持这种用法。 比较顺序的规则为: 1)先比较RouteOrder的值 2)查看路由模板的URI参数,对于每一个参数,由参数决定的顺序为: 字面值顺序排第一。 含有路由约束的顺序排第二。 没有路由约束的顺序排第三。 含有通配符路由约束的顺序排第四。 含有通配符路由约束的顺序排第五。 3)在上述规则无法区分的情况下,即上述规则判定顺序相同的两个路由,决定顺序的依据是:不区分大小写地,比较字符串的序号。

    54880

    ASP.NET Core路由中间件: 终结点与URL的映射

    二、设置内联约束 上面的演示实例注册的路由模板中定义了两个参数({city}{days}),分别表示获取天气预报的目标城市对应的区号天数。 为了确保路由参数值的有效性,在进行路由注册时可以采用内联(Inline)的方式直接将相应的约束规则定义在路由模板中。 ASP.NET Core为常用的验证规则定义了相应的约束表达式,我们可以根据需要为某个路由参数指定一个或者多个约束表达式。 而路由参数{days}则应用了两个约束:第一个是针对数据类型的约束(:int),它要求参数值必须是一个整数;第二个是针对区间的约束(:range(1,4)),意味着我们的应用最多只提供未来4天的天气。 ,那么RoutingMiddleware中间件在进行路由解析时除了要求请求路径必须与路由模板具有相同的模式,还要求携带的数据满足对应路由参数的约束条件。

    24331

    ASP.NET Core的路由:注册URL模式与HttpHandler的映射关系

    这个GetRouteData方法返回的是一个具有字典结构的对象,它的KeyValue分别代表路由参数的名称值,我们通过预先定义的参数名(“city”“days”)得到目标城市预报天数。 二、设置内联约束 在上面进行路由注册的实例中,我们在注册的URL模板中定义了两个参数({city}{days})来分别代表获取天气预报的目标城市对应的区号天数。 为了确保路由参数数值的有效性,我们在进行路由注册的时候可以采用内联(Inline)的方式直接将相应的约束规则定义在路由模板中。 ASP.NET Core针对我们常用的验证规则定义了相应的约束表达式,我们可以根据需要为某个路由参数指定一个或者多个约束表达式。 至于另一个路由参数{days}则应用了两个约束,第一个是针对数据类型的约束(:int),它要求参数值必须是一个整数。

    37610

    路由

    创建路由     路由提供了Route类作为IRouter的标准实现。 MapPost MapPut MapDelete MapVerb         路由约束 约束 示例 匹配示例 注释 int {id:int} 123 匹配所有整型 bool {active:bool range(min,max) {age:range(18,120)} 91 值必须介于18120之间。 alpha {name:alpha} Steve 字符串必须是由字母字符组成。 验证URL可转为CLR类型(例如Int或DateTime)的路由约束总是使用固定区域性;它们认为URL是不可本地化的,框架提供的路由约束不会修改路由值,从URL解析过来的所有路由值都会存为字符串。 例如,浮点路由约束会试图将路由值转换为一个浮点性,但转换后的值只用于验证它是否能够转换为浮点型

    29050

    ASP.NET Core的路由:注册URL模式与HttpHandler的映射关系

    这个GetRouteData方法返回的是一个具有字典结构的对象,它的KeyValue分别代表路由参数的名称值,我们通过预先定义的参数名(“city”“days”)得到目标城市预报天数。 二、设置内联约束 在上面进行路由注册的实例中,我们在注册的URL模板中定义了两个参数({city}{days})来分别代表获取天气预报的目标城市对应的区号天数。 为了确保路由参数数值的有效性,我们在进行路由注册的时候可以采用内联(Inline)的方式直接将相应的约束规则定义在路由模板中。 ASP.NET Core针对我们常用的验证规则定义了相应的约束表达式,我们可以根据需要为某个路由参数指定一个或者多个约束表达式。 至于另一个路由参数{days}则应用了两个约束,第一个是针对数据类型的约束(:int),它要求参数值必须是一个整数。

    51560

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

    当ASP.NET Web API框架实施约束检验的时候,已经通过URL模板匹配得到了所有的路由变量值,参数values表示的字典对象存放了这些路由变量,其KeyValue分别代表路由变量的名称值。 两个字典类型的只读属性ConstraintsDefaults表示为路由变量定义的约束默认值,字典的KeyValue分别表示变量名称和约束/默认值。 传入的分别是对应的Key通过URL模板匹配解析出来的路由变量。 URL模板、约束以及指定的虚拟根路径对HttpRoute路由解析的影响。 、约束DateToken列表以及HttpMessageHandler对象创建HttpRoute对象。

    461110

    Blazor带我重玩前端(四)

    布局 Blazor中的布局MVC中的布局是类似的。

    </LayoutView> </NotFound> </Router> 里面有三个重要组件: Found:路由机制渲染存在的页面 RouteView:接收路由数据默认的布局 如下: @page “/index” @page “/” @page “/home/index” 定义与约束路由参数 这个其实ASP.NET Core API的路由方式没有太大区别,包括路由约束部分。 @{ [Parameter] public string Theme{get;set;} } 以下是路由约束,相比于MVC,这些约束也没什么变化。 ? 如https://localhost:5001/MyComponent https://localhost:5001/MyComponent/AnotherSegment 接下来我们看一下如果通过代码方式进行页面跳转

    31520

    .NET Core开发实战(第25课:路由与终结点:如何规划好你的Web API)--学习笔记(下)

    25 | 路由与终结点:如何规划好你的Web API 自定义约束实现了路由约束接口,它只有一个 Match 方法,这个方法传入了 Http 当前的 httpContext,route,routeKey RouteValueDictionary 就是当前可以获取到的这个 routeKey 对应的传入的值是什么值,这样就可以验证我们传入的信息 routeDirection 这个枚举的作用是当前验证是用来验证 URL 请求进来,验证是否路由匹配 ,还是用来生成 URL,是进还是出的这样一个定义,在不同的场景下面可能响应的逻辑是不一样的 下面的逻辑是如果路由是进来的,也就是通过 URL 配置 action 的情况,就做一个判断,根据 routeKey public bool Max([FromRoute]long id, [FromServices]LinkGenerator linkGenerator) { // 这两行就是分别获取完整 Uri path 的代码 // 它还有不同的重载,可以根据需要传入不同的路由的值 var path = linkGenerator.GetPathByAction(HttpContext,

    20120

    Rails路由

    非资源式路由 资源路由自动生成一系列路由不同,这时需要分别声明各个路由,非资源路由可以把任意URL地址映射到控制器动作的路由。 : get ':username', to: 'users#show', as: :user HTTP方法约束 通过使用 match 方法 :via 选项,可以一次匹配多个HTTP方法: match 片段约束 使用 :contraints 选项可以约束动态片段的格式: get 'photos/:id', to: 'photos#show', contraints: { id: /[A-Z]\d{5} 选项用于指定隐式 ID 必须满足格式要求 resources :photos, constraints: {id: /[A-Z][A-Z][0-9]+/ } 这时会约束 :id 参数,路由不会匹配 / edit 动作上 限制创建的路由 Rails 默认会为每个 REST 式路由创建7个默认动作,可以使用 :only :except 选项来微调此行为。

    23520

    # 3分钟短文:Laravel路由注册,你必须掌握的“动词”!

    闭包形参并不相同,这样也完全可以使用。 但是并不推荐,前后保持一致性,有利于bug排查调试,是最佳实践。 有些位置参数,可以填可以不填,并不是强制要求的。或者说,如果不传的话,给定一个默认值,经过数据处理后返回给用户也是可以的。 约束条件支持正则表达式,比如这样写: Route::get('users/{id}', function ($id) { // })->where('id', '[0-9]+'); 此处 where ) { // })->where(['id' => '[0-9]+', 'slug' => '[A-Za-z]+']); 有了这样的条件约束方法,你完全可以利用正则的强大的功能,组装出更强劲的验证 写在最后 本文初步介绍了laravel内注册一条路由的方法,简单地讲解了位置参数的传入接收,以及在路由内添加正则表达式赋能的条件约束方式。都是基础而且使用的,大家一定要牢固掌握。

    15922

    Asp.net MVC 之 Contorllers(二)

    Route(...); RouteTable.Routes.Add("NameOfTheRoute", route); 路由的特点是几个属性(名称,URL格式,默认值,约束,数据标记路由处理 路由{Orders}/{Year} {Orders}/{Year}/ 两个完全不是一回事。 另一个影响URL路由匹配的因素是约束列表,我们可以选择给路由定义。 路由约束就是要求给定的 URL 参数必须遵循的 URL 匹配路由的附加条件。URL 不仅应与 URL 模式兼容,它也需要包含兼容的数据。一个约束可以以各种方式来定义,其中包括通过正则表达式。 约束不能保证所有无效的产品 ID local 代码都被拦截,但至少做了大量的拦截工作。 路由处理程序 路由定义了一系列最低要求的规则,根据路由模块决定请求的URL是否可以访问应用程序。 ,如路由对象本身、URL参数以及约束

    50660

    django中app分组

    08.13自我总结 django中app分组 一.django路由系统app进行分组 1.创建app 使用pycharm创建django的时候, 加上app的名字,后续多个app只需复制粘贴之前app整个文件即可 注册文件 models.py:写表生成的代码 tests.py:测试文件 views.py:视图文件,一般业务逻辑会写在其中 urls.py:格式与主urls.py一样复制过来即可 3.include用于主路由路由连接 views.get_classes) #其域名为/classes/get_classes/ #而不是/get_classes/ ] 4.路由的分发 P的约束, 传参的时候, 会根据顺序来获取参数对应的值 而如果有约束的话, 传参的时候, 会固定的将获取的值传给所对应的的约束 自定制404notfound的页面: url(r'^', views.notfound ), views: def notfound(request); return render(request, "404.html") 5.利用正则表达式以及name关键字反向路由 urls.py

    26050

    ASP.NET Core路由中间件: EndpointRoutingMiddlewareEndpointMiddleware

    针对终结点的路由是由EndpointRoutingMiddlewareEndpointMiddleware这两个中间件协同完成的。 RouteOptions的ConstraintMap属性表示的字典与路由参数的内联约束有关,它提供了在路由模板中实现的约束字符串(如regex表示正则表达式约束)与对应约束类型(正则表达式约束类型为RegexRouteConstraint 如下所示的Map方法会根据提供的作为路由模式处理器的RoutePattern对象与RequestDelegate对象创建一个终结点,并以ModelEndpointDataSource的形式予以注册。 [1]: 终结点与URL的映射 ASP.NET Core路由中间件[2]: 路由模式 ASP.NET Core路由中间件[3]: 终结点 ASP.NET Core路由中间件[4]: EndpointRoutingMiddleware EndpointMiddleware ASP.NET Core路由中间件[5]: 路由约束

    34530

    相关产品

    • 弹性网卡

      弹性网卡

      弹性网卡(ENI)是绑定私有网络内云服务器 的一种弹性网络接口 ,可在多个云服务器间自由迁移。您可以在云服务器上绑定多个弹性网卡 ,实现高可用网络方案;也可以在弹性网卡上绑定多个内网 IP ,实现单主机多 IP 部署...

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券