FastAPI学习笔记(一)-6.路径参数及验证
1.被装饰的函数中的入参名称若在修饰器参数(请求路径)中以大括号方式展示,则为路径参数
@app03.get('/path/{parameters}')
async def path_params01(parameters:str):
return { "msg":parameters}
2.路径参数可以是枚举类型
# CityName类继承了str和Enum枚举类,str表示枚举的值的类型
class CityName(str, Enum):
Beijing = "Beijing 2008"
Wuhan = "Wuhan 2020"
Other = "Other"
@app03.get("/enum/{city}")
async def latest(city: CityName):
返回值:
3.路径参数若是文件路径,需要加:path标识
@app03.get("/files/{file_path:path}")
async def filepath(file_path: str):
return f'the file path is {file_path}'
返回结果:
4.路径参数的验证,使用路径Path类进行验证
@app03.get("/path_/{num}")
async def path_param_validate(
num: int = Path(..., title='num数值', description="输入num数值",ge=1,le=10)
):
return num
代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 ''' 2 @author:invoker 3 @project:fastapi202108 4 @file: chapter031.py 5 @contact:invoker2021@126.com 6 @descript: 7 @Date:2021/8/5 21:22 8 @version: Python 3.7.8 9 ''' 10 11 from fastapi import APIRouter 12 # fastapi中校验路径参数的类Path 13 from fastapi import Path 14 from enum import Enum 15 16 app031 = APIRouter() 17 18 """ 19 3.1路径参数与数字验证 20 """ 21 22 # 1.被装饰的函数中的入参名称若在修饰器参数(请求路径)中以大括号方式展示,则为路径参数 23 @app031.get('/path/{parameters}') 24 async def path_param02(parameters: str): 25 return {"msg": parameters} 26 27 28 @app031.get('/path/parameters') 29 async def path_param01(): 30 return {"msg": "this is a msg"} 31 32 33 # 2.1CityName类继承了str和Enum枚举类,str表示枚举的值的类型 34 class CityName(str, Enum): 35 Beijing = "Beijing 2008" 36 Wuhan = "Wuhan 2020" 37 Other = "Other" 38 39 # 2.2 路径参数可以是枚举类型 40 @app031.get("/enum/{city}") 41 async def latest(city: CityName): 42 if city == CityName.Beijing: 43 return {"city_name": city, "confirmed": 1234, "death": 8} 44 if city == CityName.Wuhan: 45 return {"city_name": city, "confirmed": 123, "death": 3} 46 return {"city_name": city, "latest": "unknown"} 47 48 # 3.路径参数传入路径时,需要加上:path表示 49 @app031.get("/files/{file_path:path}") 50 async def filepath(file_path: str): 51 return f'the file path is {file_path}' 52 53 # 4.路径参数的验证,使用路径Path类进行验证 54 @app031.get("/path_/{num}") 55 async def path_param_validate( 56 num: int = Path(..., title='num数值', description="输入num数值",ge=1,le=10) 57 ): 58 return num
"""
FastAPI 中经常用 ... 来表达请求参数
使用 FastAPI,以下代码片段将使用查询参数定义一个路由和服务,该参数q应为字符串。
@app.get("/something/)
async def something(q: str):
return f"Your query was {q}"
如果想让这个请求参数是可选的就可以写成这样。
async def something(q: str = None):
但是如果想做一些验证,比如最小长度是 10,并且是可选的,可以写成这样。
async def something(q: str = Query(None, min_length=10)):
Query 对象的第一个参数是默认值 None。请求的时候可以将其省略,但是如果存在该参数,则其长度应至少为10个字符。但是,如果我们想为参数设置最小长度同时又需要它,该怎么办?
这是我们应该使用 ... 的地方。现在看起来像这样:
async def something(q: str = Query(..., min_length=10)):
就是这个参数是必须的,并且长度不能小于 10。
"""
本文来自博客园,作者:kaer_invoker,转载请注明原文链接:https://www.cnblogs.com/invoker2021/p/15106874.html