# 自己手写一个极简版 FastAPI 框架 class MiniFastAPI: def __init__(self): # 路由表:存储 {("GET", "/url1"): 对应函数} self.router_map = {} # 模仿 @app.get("/path") 装饰器 def get(self, path: str): def decorator(func): # 把 请求方法+路径 绑定到函数,存入路由表 self.router_map[("GET", path)] = func return func return decorator # ASGI 入口方法(Uvicorn 固定会调用这个方法) async def __call__(self, scope, receive, send): # 只处理 http 请求 if scope["type"] != "http": return # 1. 从请求里拿到 请求方法、URL路径 http_method = scope["method"] path = scope["path"] # 2. FastAPI 核心:URL 匹配路由(就是你问的分发匹配) key = (http_method, path) if key in self.router_map: # 找到对应函数,执行 res = self.router_map[key]() response_body = str(res).encode("utf-8") status_code = 200 else: # 404 找不到路由 response_body = b"404 Not Found" status_code = 404 # 3. 返回响应给 Uvicorn await send({ "type": "http.response.start", "status": status_code, "headers": [(b"content-type", b"text/plain")], }) await send({ "type": "http.response.body", "body": response_body, }) # ------------------- 用我们自己写的框架写接口 ------------------- # 实例化框架,等价于 app = FastAPI() app = MiniFastAPI() # 注册 url1 接口 @app.get("/url1") def url1_func(): return "这是 url1 对应的函数执行结果" # 注册 url2 接口 @app.get("/url2") def url2_func(): return "这是 url2 对应的函数执行结果"
news
2026/5/16 17:48:04
极简fastapi框架
张小明
前端开发工程师
1.2k
24
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设
2026/5/16 17:47:07
《拓扑不变量系统刻画》导读版研究报告(科普教育)
《拓扑不变量系统刻画》导读版研究报告一、序章:拓扑不变量在世毫九体系的理论定位与关系架构 1.1 世毫九理论体系的核心架构与拓扑基础 世毫九理论体系作为一个覆盖微观认知到宏观宇宙的全域统一理论框架,其理论深度和广度在当代科学研究中具有开创性意…
网站建设
2026/5/16 17:46:28
ENSP基础配置学习总结
一、设备基础配置命令设备基础配置命令是华为交换机与路由器的通用基础操作,是开展所有网络配置工作的前提,主要用于视图切换、设备信息修改、配置查看与保存。其中sys命令用于从用户视图进入系统视图,开启设备配置权限;sys XXX可…
网站建设
2026/5/16 17:45:23
【实战解析】基于74LS148与CD4511的智能病房呼叫系统设计与Multisim仿真
1. 智能病房呼叫系统设计背景与需求分析 医院病房呼叫系统是保障患者安全的重要设施,传统机械式按钮呼叫器存在响应慢、优先级混乱等问题。作为一名电子爱好者,我曾经帮社区诊所改造过呼叫系统,深刻体会到优先级处理的重要性。想象一下&#…
网站建设
2026/5/16 17:45:18
从NOIP1999经典题到Dilworth定理:深入解析拦截导弹问题的双解与优化
1. 从NOIP1999经典题说起:拦截导弹问题的背景与意义 1999年全国青少年信息学奥林匹克竞赛(NOIP)普及组出现了一道经典的拦截导弹问题,这道题目不仅考察了选手对基础算法的掌握程度,更巧妙地将实际问题抽象为计算机科学…
网站建设
2026/5/16 17:42:07
Cadence IC617实战:用gm/id法搞定五管OTA运放设计,附完整参数计算与仿真避坑
Cadence IC617实战:用gm/id法设计五管OTA运放的完整指南 在模拟集成电路设计中,五管OTA(运算跨导放大器)是最基础也最重要的模块之一。掌握gm/id设计方法能让你从繁杂的试错中解脱出来,实现精准的晶体管尺寸计算。本文…