3. fastApi查询参数详解

当声明的参数不是路径参数时,路径操作函数会把该参数自动解释为查询参数。如下:路径操作函数将参数skip limit解释为查询参数 query_parameter

@app.get("/items/")
async def read_item(skip: int = 0, limit: int = 10):

查询参数的介绍与常见使用场景

查询参数(Query parameters)是在URL中添加的键值对,用于向服务器发送附加的参数信息。它们通常用于筛选、排序、分页和搜索等功能。查询参数以问号(?)开始,后面跟着一个或多个键值对,每个键值对之间使用“&”符号进行分隔。例如,以下URL包含两个查询参数:

https://www.example.com/search?q=books&sort=price

其中,“q”是键,对应的值是“books”,表示查询的关键词是“books”;“sort”是键,对应的值是“price”,表示搜索结果按价格排序。

查询参数的用法主要包括:

筛选数据:可以通过查询参数来筛选所需的数据。例如,在电商网站中,可以使用“category”参数来筛选商品分类。

分页:可以使用“page”和“size”等参数来控制分页。例如,“page=2&size=10”表示返回第2页,每页包含10条结果。

搜索:可以使用“q”参数来指定搜索关键词,以便搜索引擎返回相关结果。

排序:可以使用“sort”参数来指定排序方式,例如按价格、评分等排序。

其他:查询参数还可以用于其他自定义功能,例如限制返回结果的数量、选择返回结果的字段等。

使用查询参数可以方便地传递附加的参数信息,以便服务器返回符合要求的数据。同时,查询参数还可以缓存结果,从而提高性能和响应速度

fastApi示例

实现分页查询功能

目标:接口路径为/query,接受查询参数page和limit,其中page默认为1,limit为可选参数,默认为10
实现代码:

from typing import Optional
@app03.get("/query")
def page_limit(page: int = 1, limit: Optional[int] = 10): 
# def page_limit(page: int, limit: Optional[int] = 10):  # 给了默认值就是选填的参数,没给默认值就是必填参数
    return {"page": page, "limit": limit}

最终结果
3. fastApi查询参数详解_第1张图片

布尔类型转换

说明:当前端传递查询参数到后端时,参数值【yes on 1 True true】可以转换成true, 其它可以转换false(当试图函数接受的查询参数为bool类型时)

@app03.get("/query/bool/conversion")
def type_conversion(param: bool = False):
    return param

Query类校验查询参数

说明:可以使用Query方法对查询参数中的【字符串,数组】进行校验,主要校验字符串的长度,字符串的开头,同时为参数添加描述,便于通过api查看
示例代码:

@app03.get("/query/validations")  # 长度+正则表达式验证,比如长度8-16位,以a开头。其它校验方法看Query类的源码
def query_params_validate(
        # value: str = Query(..., min_length=8, max_length=16, regex="^a"),  # ...换成None就变成选填的参数
        # value: str = Query(None, min_length=8, max_length=16, regex="^a"),
        # 使用default为数据设置默认值,使用alias为参数设置别名,使用description设置描述介绍
        value: str = Query(default="ahelloworld",alias="字符串查询参数示例",description="这是描述",min_length=8, max_length=16, regex="^a"),
        values: List[str] = Query(["v1", "v2"], alias="alias_name")
):  # 多个查询参数的列表。参数别名
    return value, values

实现效果:
3. fastApi查询参数详解_第2张图片
解释:通过Query方法校验查询参数,限制了字符串的长度,同时使用正则过滤查询参数的开头。
Query方法在大多数情况下用于过滤查询参数中的字符串

你可能感兴趣的:(fastApi学习,fastapi,python)