高性能 FastAPI 框架入门精讲-4路径的传参和参数验证
url路径除了可以传常用的参数外,还可以传枚举和文件并且还可以对参数进行验证
1不传参的路径:
@app03.get("/path/parameters") def path_params01(): return {"message":"This is message"}
2路径传参:
方法中要声明参数的类型
#传路径参数 @app03.get("/path/{parameters}") def path_params01(parameters:str): return {"message":parameters}
3枚举类传参:
首先要定义一个枚举类,然后要在方法中声明接收的参数类型是这个枚举类
#定义一个枚举类 class CityName(str, Enum): Beijing = "Beijing China" Shanghai = "Shanghai China" #枚举类型参数 @app03.get("/enmu/{city}") async def latest(city:CityName): if city == CityName.Shanghai: return {"city_name":city, "confirmed":1492,"death":7} if city == CityName.Beijing: return {"city_name":city,"confirmed":971,"death":9} return {"city_name":city,"latest":"unknown"}
4文件类传参:
接收文件路径时,url中的路径参数需要声明这个参数仅仅是一个路径,例如file_path:path,目的为了防止反斜杠产生的歧义
凡是接收的参数,在函数中都需要声明,因此本例需要声明这个路径参数是一个字符串
#文件类型参数的传递 @app03.get("/files/{file_path:path}") def filepath(file_path:str): return f"The file path is {file_path}"
5路径参数验证
路径参数是路径的一部分,所以它是必需的,通过"..."将其标记为必需参数,即使默认值给的是None依然是必需参数,验证路径参数需要用到Path这个库(from fastapi import Path),例如:
#用Path对num进行校验,可以不穿值,要求num大于1小于10,同时还可以设置标题和描述
@app03.get("/path_/{num}") def path_params_validate( num:int =Path(...,title="input your num", description="desc your num",ge=1,le=5) ): return num
分类:
FastApi
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?