当前位置:   article > 正文

4.fastapi的路径参数和查询参数的数据解析、验证_fastapi apirouter参数

fastapi apirouter参数

4.fastapi的路径参数和查询参数数据解析、验证

1.路径参数(chapte01.py 文件中)
from enum import Enum

from fastapi import APIRouter, Path

app01 = APIRouter()

"""
Path Parameters and Number Validations路径参数和数字验证
"""


@app01.get("/parameters")
def path_params01():
    return {"message": "This is a messaget"}


@app01.get("/{parameters}")  # 函数的顺序就是路由的顺序(api的顺序)
def path_params01(parameters: str):
    return {"message": parameters}


class CityName(str, Enum):
    Beijing = "Beijing china"
    Shanghai = "Shanghai China"

# 路径参数---》枚举类型
@app01.get("/enum/{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"}

# 文件路径
@app01.get("/files/{file_path:path}") #通过path parameters传递文件路径  ---->注明file_path:path 是为了区分前面的路由的路径
def filepath(file_path: str) :
    return f"The file path is {file_path}"

@app01.get("/path_/{num}" )
def path_params_validate(   
        num: int = Path(..., title="Your number", description="路径参数校验大于1小于10",ge=1,le=10)):  # 路径参数校验
    return num

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 查看交互文档docs

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-43UiJLd6-1636982975679)(4.fastapi%E7%9A%84%E8%B7%AF%E5%BE%84%E5%8F%82%E6%95%B0%E5%92%8C%E6%9F%A5%E8%AF%A2%E5%8F%82%E6%95%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E8%A7%A3%E6%9E%90%E3%80%81%E9%AA%8C%E8%AF%81.assets/image-20210606185737336.png)]

  • 查看各个接口(节选)

    • 第三个,枚举类型

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kF0mi4hb-1636982975684)(4.fastapi%E7%9A%84%E8%B7%AF%E5%BE%84%E5%8F%82%E6%95%B0%E5%92%8C%E6%9F%A5%E8%AF%A2%E5%8F%82%E6%95%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E8%A7%A3%E6%9E%90%E3%80%81%E9%AA%8C%E8%AF%81.assets/image-20210606185943452.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xVMnyQ3H-1636982975686)(4.fastapi%E7%9A%84%E8%B7%AF%E5%BE%84%E5%8F%82%E6%95%B0%E5%92%8C%E6%9F%A5%E8%AF%A2%E5%8F%82%E6%95%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E8%A7%A3%E6%9E%90%E3%80%81%E9%AA%8C%E8%AF%81.assets/image-20210606190010857.png)]

    • 通过path parameters传递文件路径 参数

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HKelSvye-1636982975690)(4.fastapi%E7%9A%84%E8%B7%AF%E5%BE%84%E5%8F%82%E6%95%B0%E5%92%8C%E6%9F%A5%E8%AF%A2%E5%8F%82%E6%95%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E8%A7%A3%E6%9E%90%E3%80%81%E9%AA%8C%E8%AF%81.assets/image-20210606190211072.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ne5F1lz-1636982975693)(4.fastapi%E7%9A%84%E8%B7%AF%E5%BE%84%E5%8F%82%E6%95%B0%E5%92%8C%E6%9F%A5%E8%AF%A2%E5%8F%82%E6%95%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E8%A7%A3%E6%9E%90%E3%80%81%E9%AA%8C%E8%AF%81.assets/image-20210606190232345.png)]

    • 参数验证(调用fastapi的Path进行路径参数校验)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FfRXBUad-1636982975697)(4.fastapi%E7%9A%84%E8%B7%AF%E5%BE%84%E5%8F%82%E6%95%B0%E5%92%8C%E6%9F%A5%E8%AF%A2%E5%8F%82%E6%95%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E8%A7%A3%E6%9E%90%E3%80%81%E9%AA%8C%E8%AF%81.assets/image-20210606191017323.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qcH4ccRa-1636982975706)(4.fastapi%E7%9A%84%E8%B7%AF%E5%BE%84%E5%8F%82%E6%95%B0%E5%92%8C%E6%9F%A5%E8%AF%A2%E5%8F%82%E6%95%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E8%A7%A3%E6%9E%90%E3%80%81%E9%AA%8C%E8%AF%81.assets/image-20210606191038515.png)]

2.查询参数(接上代码,在chaper01.py中)

"""
查询参数和字符串验证
"""
@app01.get("/query")
def page_limit(page: int = 1,limit: Optional[int] = None): #给了默认值就是选填的参数
    if limit:
        return {"page":page, "limit": limit}
    return {"page": page}

@app01.get("/query/bool/conversion")
def type_conversion(param: bool = False): # bool类型转换: yes on 1 True true会转换成t
    return param

@app01.get("/query/validations")
def query_params_validate(
    value: str = Query(..., min_length=8,max_length=16,regex="^a"),
    values: List[str] = Query(default=["v1","v2"],alias="alias_name")):#多个查询参数的列表。参数别名
    return value,values

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 查看接口

    • 数据验证(/query/validations最后一个接口)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YW7h8Vs0-1636982975708)(4.fastapi%E7%9A%84%E8%B7%AF%E5%BE%84%E5%8F%82%E6%95%B0%E5%92%8C%E6%9F%A5%E8%AF%A2%E5%8F%82%E6%95%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E8%A7%A3%E6%9E%90%E3%80%81%E9%AA%8C%E8%AF%81.assets/image-20210606220211755.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B9ziMpfS-1636982975710)(4.fastapi%E7%9A%84%E8%B7%AF%E5%BE%84%E5%8F%82%E6%95%B0%E5%92%8C%E6%9F%A5%E8%AF%A2%E5%8F%82%E6%95%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E8%A7%A3%E6%9E%90%E3%80%81%E9%AA%8C%E8%AF%81.assets/image-20210606220248123.png)]

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号