python:Fastapi 查询参数及路径参数校验

这次主要聊聊Fastapi中,查询参数和路径参数的使用及校校验,Path是为路径参数声明校验和元数据,而 Query是 为查询参数声明校验和元数据。

两个的区别就是,路径参数是跟在路径后面的,例如:/path/11 即为路径参数;查询参数是键值对传值,例如:/path/q=1q=1 即为查询参数

介绍完后,下面进入实例操作环节…



查询参数和字符串校验
 

查询参数校验

FastAPI 允许参数声明额外的信息和校验,以下面的应用程序为例:

from typing import Optional
from fastapi import FastAPI

app = FastAPI()


@app.get("/items")
def read_items(q: Optional[str] = None):
    """
    :param q:
    :return:
    """
    results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        results.update({"q": q})
    return results

上述实例是设置了查询参数q,设置的类型为str,默认值为NoneOptional是用于定义为可选参数,所以此时的q为可选参数,请求时可传可不传。

根据上述实例继续增加额外的校验,也就是增加一个约束条件。增加后的应用程序为例如下:

from typing import Optional
from fastapi import FastAPI
from fastapi import Query

app = FastAPI()


@app.get("/items_check")
def read_items_check(q: Optional[str] = Query(None, min_length=3, max_length=5)):
    """
    约束条件,校验查询参数的长度
    :param q:
    :return:
    """
    results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        results.update({"q": q})
    return results

上述实例中的使用Query(None)替换默认值NoneQuery的第一个参数同样也是用于定义默认值。

所以:

q: str = Query(None)

等同于:

q: str = None

也等同于:

q: Optional[str] = None

Query()主要是将其参数声明为查询参数,可以将更多的参数传递给Query()中:

q: Optional[str] = Query(None, min_length=3, max_length=5)

注释信息:

  • max_length:设置q参数的值,长度最大为10
  • min_length:设置q参数的值,长度最小为3

请求接口:

http://127.0.0.1:8000/items_check?q=1

{
    "detail": [{
        "loc": ["query", "q"],
        "msg": "ensure this value has at least 3 characters",
        "type": "value_error.any_str.min_length",
        "ctx": {
            "limit_value": 3
        }
    }]
}

或请求接口:

http://127.0.0.1:8000/items_check?q=111111

{
    "detail": [{
        "loc": ["query", "q"],
        "msg": "ensure this value has at most 5 characters",
        "type": "value_error
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值