高性能 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

 

posted @ 2022-01-03 17:47  linuxTang  阅读(274)  评论(0编辑  收藏  举报