fastapi 查询参数和字符串校验 / 路径参数和数值校验

简介: fastapi 查询参数和字符串校验 / 路径参数和数值校验

文章目录

1. 约束限制

2. 必须参数

3. 查询参数列表 / 多个值

4. 声明更多元数据

5. 别名参数

6. 弃用参数

7. Path 路径参数

8. 按需对参数排序

learn from https://fastapi.tiangolo.com/zh/tutorial/query-params-str-validations/


1. 约束限制

from typing import Optional
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
async def read_items(q: Optional[str] = Query(None, max_length=50)):
    res = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        res.update({"q":q})
    return res

Query(None, max_length=50) 显示声明为查询参数,默认为 None, 最大长度50

image.png

32.png

  • 更多限制 Query(None, min_length=3, max_length=50)
  • 正则限制 Query(None, min_length=3, max_length=50, regex="^fixedquery"), 以 ^ 后面的字符开头
  • 33.png

注意 None 是默认值,也可以是其它默认值,改参数是可选的


2. 必须参数


将 默认值替换成 ...

q: Optional[str] = Query(..., min_length=3, max_length=50, regex="^fixedquery$")

3. 查询参数列表 / 多个值

添加 List[str],q: Optional[List[str]] = Query(None)


http://127.0.0.1:8000/items/?q=123456&q=7890&q=hahha


在没有任何给定值时,赋予默认值 q: Optional[List[str]] = Query(["mike","jason"]

image.pngimage.png


4. 声明更多元数据


  • 添加 titledescription
async def read_items(q: list = Query(["mike","jason"], 
        title="查询字符串", 
        description="查询匹配的item",
    )
):
    res = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        res.update({"q":q})
    return res


5. 别名参数

你需要在浏览器里使用 参数 item-good,但是 python 不支持 - 作为变量名


q: Optional[str] = Query(None, alias = "item-good")

image.png

6. 弃用参数

将参数 deprecated=True 传入 Query

image.png

7. Path 路径参数

from fastapi import Path
@app.get("/items/{item_id}")
async def read_items(item_id:int = Path(..., title="the id of the item"),
                    q : Optional[str] = Query(None, alias="item-query")):
    results = {"item_id": item_id}
    if q:
        results.update({"q": q})
    return results

image.png


限制大小 item_id:int = Path(..., title="the id of the item", ge=23, le=24),[23.0, 24.0] 之间的 int

路径参数总是 必需的


8. 按需对参数排序

fastapi image.png会自动根据 参数的名称、类型和默认值声明(Query、Path 等)来检测参数

from fastapi import Path
@app.get("/items/{item_id}")
async def read_items(
    q: str, item_id: int = Path(..., title="The ID of the item to get, hha", 
                  description="my description")
):
    results = {"item_id": item_id}
    if q:
        results.update({"q": q})
    return results

image.pngimage.png

@app.get("/items/{item_id}")
async def read_items(
    q:str, item_id: int = Path(..., title="The ID of the item to get")
):
    results = {"item_id": item_id}
    if q:
        results.update({"q": q})
    return results

对上面的代码,参数 q,item_id 的顺序如果调换了,会报错

 item_id: int = Path(..., title="The ID of the item to get"), q: str
    ^
SyntaxError: non-default argument follows default argument

加入第一个参数 *,表示让后面的所有参数作为键值对参数

@app.get("/items/{item_id}")
async def read_items(
    *, item_id: int = Path(..., title="The ID of the item to get"), q:str
):
    results = {"item_id": item_id}
    if q:
        results.update({"q": q})
    return results
相关文章
|
8月前
|
数据采集 JSON JavaScript
全面拥抱FastApi —三大参数及验证
全面拥抱FastApi —三大参数及验证
|
前端开发 中间件 API
FastAPI第二天---参数校验
FastAPI第二天---参数校验
177 0
FastAPI第二天---参数校验
FastAPI(32)- Dependencies in path operation 通过路径操作装饰器的 dependencies 参数声明依赖
FastAPI(32)- Dependencies in path operation 通过路径操作装饰器的 dependencies 参数声明依赖
136 0
FastAPI(32)- Dependencies in path operation 通过路径操作装饰器的 dependencies 参数声明依赖
FastAPI(26)- Path Operation Configuration 路径操作的配置
FastAPI(26)- Path Operation Configuration 路径操作的配置
106 0
FastAPI(26)- Path Operation Configuration 路径操作的配置
|
IDE API 开发工具
FastAPI(14)- 路径操作函数参数的类型是一个嵌套 Pydantic Model 的使用场景
FastAPI(14)- 路径操作函数参数的类型是一个嵌套 Pydantic Model 的使用场景
162 0
FastAPI(14)- 路径操作函数参数的类型是一个嵌套 Pydantic Model 的使用场景
|
Python
FastAPI(11)- 函数参数类型是列表,但不使用 typing 中的 List,而使用 list,会怎么样?
FastAPI(11)- 函数参数类型是列表,但不使用 typing 中的 List,而使用 list,会怎么样?
168 0
FastAPI(11)- 函数参数类型是列表,但不使用 typing 中的 List,而使用 list,会怎么样?
FastAPI(5)- 查询参数 Query Parameters
FastAPI(5)- 查询参数 Query Parameters
218 0
FastAPI(5)- 查询参数 Query Parameters
FastAPI(4)- 路径参数 Path Parameters (下)
FastAPI(4)- 路径参数 Path Parameters (下)
152 0
FastAPI(4)- 路径参数 Path Parameters (下)