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

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

  • 查看交互文档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

  • 查看接口

    • 数据验证(/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)]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小帆芽芽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值