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源码分析 - 路由匹配
上一篇 说到了路由事件注册以及路由表的生成, 前面 也解析到了, 管道事件的建立, 那么接下来, 肯定就是要调用执行这些事件了, 这些就不表了, 我已经得到我想要的部分了, 接下来, 在执行这些管道事 ...
随机推荐
- flutter系列之:如何自定义动画路由
目录 简介 自定义跳转使用 flutter动画基础 实现一个自定义的route 总结 简介 flutter中有默认的Route组件,叫做MaterialPageRoute,一般情况下我们在flutte ...
- Linux云计算运维工程师day28shell编程基础
一. 1.全局变量.环境变量 Export OLDOBY="I am a oldboy." Echo OLDOBY OLDOBY="I am a oldboy.&quo ...
- java递归算法之老鼠找路
(上图出自B站韩顺平教育) 从上图的(1,1)处,寻找到(6,5)处的路线,红色格子是障碍 public class MiGong { public static void main(String[] ...
- Java方法的返回值及注意事项
方法的返回值 为什么要有带返回值的方法呢? 调用处拿到方法的结果之后,才能根据结果进行下一步操作 带返回值方法的定义和调用: 如果在调用处,要根据方法的结果去编写另一段代码逻辑 为了在调用处拿到方法产 ...
- 记一次 Windows10 内存压缩模块 崩溃分析
一:背景 1. 讲故事 在给各位朋友免费分析 .NET程序 各种故障的同时,往往也会收到各种其他类型的dump,比如:Windows 崩溃,C++ 崩溃,Mono 崩溃,真的是啥都有,由于基础知识的相 ...
- jdk环境配置已经版本切换
下载安装jdk到电脑盘,两个版本要下载到一个盘里面下安装好后右击我的电脑 找到高级系统设置,点开环境变量 新建环境变量 总计环境变量一共添加四个其中 java8和java11是是选择文件路径 JAVA ...
- 理解 React 中的 useEffect、useMemo 与 useCallback
useEffect 先理解 useEffect 有助于学习 useMemo 和 useCallback.因为 useMemo 和 useCallback 的实现实际上都是基于 useEffect 的. ...
- Pwn系列之Protostar靶场 Stack3题解
(gdb) disass main Dump of assembler code for function main: 0x08048438 <main+0>: push ebp 0x08 ...
- Python NumPy 广播(Broadcast)
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足 a.shape == ...
- 2022-05-11:k8s安装easydarwin流媒体服务器,yaml如何写?
2022-05-11:k8s安装easydarwin流媒体服务器,yaml如何写? 答案2022-05-11: yaml如下: apiVersion: apps/v1 kind: Deployment ...