Day-4 路由匹配源码
1. 请求来了会走WSGIHandler的call方法
convert_exception_to_response也是进行封装
真的handler是从下图定义
resolver = URLResolver(RegexPattern(....))
那么
resolver.pattern = RegexPattern(R"^/")
resolver.urlconf_name = "day006.urls"
接下来执行
resolver_match = resolver.resolve(request.path_info)
执行resolver就是URLResolver下的resolve方法里面传了request.path_info 就是"/info/v1/"
所以第四步里的pattern就是根路由文件中urlpattern列表中的一个一个元素
day003中提到urlpattern中元素本质是 URLPattern对象和URLResolver对象(路由分发)
所以
for pattern in self.url_patterns:
try:
sub_match = pattern.resolve(new_path)
这里的就相当于执行各自的resolve方法进行匹配
如果是静态路由
就会执行 URLPattern.resolver('info/v1/')
URLResolver通过self.封装参数,执行resolve函数
这里的is_endpoint代表view不可执行,什么时候能执行is_endpoint =True
就比如静态路由view直接可执行is_endpoint直接等于True
静态路由和路由分发都会走各自的resolve方法,但功能不同。
Day-4 路由匹配源码的更多相关文章
- python-flask-路由匹配源码分析
@app.route('/') def hello_world(): return 'Hello World!' 第1步: class Flask(_PackageBoundObject): def ...
- 7月3日下午 微擎芸众商城 设计思路 - laravel路由底层源码解读
学习参考文章 https://learnku.com/articles/13622/the-principle-of-laravel-routing-execution <?phpnamespa ...
- Dubbo 源码分析 - 集群容错之 Router
1. 简介 上一篇文章分析了集群容错的第一部分 -- 服务目录 Directory.服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由.上一篇文章关于服务路由相关逻辑没有 ...
- laravel源码解析
本专栏系列文章已经收录到 GitBooklaravel源码解析 Laravel Passport——OAuth2 API 认证系统源码解析(下)laravel源码解析 Laravel Passport ...
- Nop--NopCommerce源码架构详解专题目录
最近在研究外国优秀的ASP.NET mvc电子商务网站系统NopCommerce源码架构.这个系统无论是代码组织结构.思想及分层都值得我们学习.对于没有一定开发经验的人要完全搞懂这个源码还是有一定的难 ...
- NopCommerce源码架构
我们承接以下nop相关的业务,欢迎联系我们. 我们承接NopCommerce定制个性化开发: Nopcommerce二次开发 Nopcommerce主题开发 基于Nopcommerce的二次开发的电子 ...
- Django之REST framework源码分析
前言: Django REST framework,是1个基于Django搭建 REST风格API的框架: 1.什么是API呢? API就是访问即可获取数据的url地址,下面是一个最简单的 Djang ...
- Django源码剖析
一.Django底层剖析之一次请求到响应的整个流程 As we all know,所有的Web应用,其本质上其实就是一个socket服务端,而用户的浏览器就是一个socket客户端 #!/usr/bi ...
- 【JDK命令行 一】手动编译Java源码与执行字节码命令合集(含外部依赖引用)
写作目标 记录常见的使用javac手动编译Java源码和java手动执行字节码的命令,一方面用于应对 Maven 和 Gradle 暂时无法使用的情况,临时生成class文件(使用自己的jar包):另 ...
- MVC源码分析 - 路由匹配
上一篇 说到了路由事件注册以及路由表的生成, 前面 也解析到了, 管道事件的建立, 那么接下来, 肯定就是要调用执行这些事件了, 这些就不表了, 我已经得到我想要的部分了, 接下来, 在执行这些管道事 ...
随机推荐
- 如何在模型中引入可学习参数(Pytorch)
错误实例: def init(self): self.w1 = torch.nn.Parameter(torch.FloatTensor(1),requires_grad=True).cuda() s ...
- javasec(三)类加载机制
这篇文章介绍java的类加载机制. Java是一个依赖于JVM(Java虚拟机)实现的跨平台的开发语言.Java程序在运行前需要先编译成class文件,Java类初始化的时候会调用java.lang. ...
- 一文详解RocketMQ-Spring的源码解析与实战
摘要:这篇文章主要介绍 Spring Boot 项目使用 rocketmq-spring SDK 实现消息收发的操作流程,同时笔者会从开发者的角度解读 SDK 的设计逻辑. 本文分享自华为云社区< ...
- Netty介绍与认识
概述 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 2.体系结构图 Netty的核 ...
- 关于java中的equal
正常情况下的equal方法是比较两者之间的id.如果需要它实现其他的问题,可以通过重写这个方法.idea自带了重写equal的快捷方式.右键生成中的equals() 和 hashCode()就可以帮助 ...
- 音视频八股文(3)--ffmpeg常见命令(2)
07-ffplay命令播放媒体 播放本地文件 播放本地 MP4 视频文件 test.mp4 的命令,从第 2 秒位置开始播放,播放时长为 10 秒,并且在窗口标题中显示 "test time ...
- 2022-09-06:以下go语言代码输出什么?A:Hi All;B:Hi go All;C:Hi;D:go All。 package main import “fmt“ func app() f
2022-09-06:以下go语言代码输出什么?A:Hi All:B:Hi go All:C:Hi:D:go All. package main import "fmt" func ...
- 2021-10-21:Excel 表列序号。给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回该列名称对应的列序号。示例 1:输入: columnTitle = “A“,
2021-10-21:Excel 表列序号.给你一个字符串 columnTitle ,表示 Excel 表格中的列名称.返回该列名称对应的列序号.示例 1:输入: columnTitle = &quo ...
- 【实践篇】教你玩转JWT认证---从一个优惠券聊起
引言 最近面试过程中,无意中跟候选人聊到了JWT相关的东西,也就联想到我自己关于JWT落地过的那些项目. 关于JWT,可以说是分布式系统下的一个利器,我在我的很多项目实践中,认证系统的第一选择都是JW ...
- props传值遇Cannot read property getAttribute of undefined异常
今有一个echarts 图标的子组件使用watch 监听接受父组件传入的data,而在父组件页面再次根据日期筛选数据,重新传入子组件进行图表重绘时老实会提示报错 vue.runtime.esm.js? ...