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

 

 

代码如下:
 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
View Code

 

"""
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。
"""


 

 

posted @ 2021-08-06 07:48  kaer_invoker  阅读(154)  评论(0编辑  收藏  举报