您现在的位置是:网站首页> 编程资料编程资料
python中fastapi设置查询参数可选或必选_python_
2023-05-26
348人已围观
简介 python中fastapi设置查询参数可选或必选_python_
前言:
在fastapi中,我们定义的查询参数是可以设置成:必选参数 or 可选参数。
可选查询参数
- 只要给查询参数的默认值设置为
None,表示该查询参数是可选参数。
from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: str, q=None): data = {"item_id": item_id} if q: data["q"] = q return data补充:此时路径操作函数内的参数有两个,一个是路径参数
item_id,一个是查询参数q,fastapi是可以区分他们的。
必选查询参数
- 当你为查询参数设置默认值时,则该参数在URL中不是必须的。
- 如果你不想添加默认值,而只是想使该参数成为可选的,则将默认值设置为
None。 - 但当你想让一个查询参数成为必需的,不声明任何默认值就可以.
- 比如:这里的查询参数
needy是类型为str的必需查询参数。
from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_user_item(item_id: str, needy: str): item = {"item_id": item_id, "needy": needy} return item- 如果在URL中没有查询参数
needy,则报错
{ "detail": [ { "loc": [ "query", "needy" ], "msg": "field required", "type": "value_error.missing" } ] }可选和必选参数共存
- 也可以定义一些参数为必需的,一些具有默认值,而某些则完全是可选的
- 此时:
itme_id是路径参数,needy是必选路径参数,skip是有默认值必选查询参数,limit是可选查询参数。
from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_user_item( item_id: str, needy: str, skip: int = 0, limit=None ): item = {"item_id": item_id, "needy": needy, "skip": skip, "limit": limit} return item为可选参数做类型提示
- 比如一个可选的参数
q,如有该参数时,他的类型是整型,此时定义类型提示如下 - 使用
typing模块下的Union做类型提示,Union[int, None]表示类型是int或者None - 此时对于URL:
http://127.0.0.1:8000/items/12?q=12,参数q就会自动转化为数字12
from typing import Union from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: str, q: Union[int, None] = None): data = {"item_id": item_id} if q: data["q"] = q return data补充1:
- 可能为空的情况做类型提示,一般使用一个比
typing.Union更加方便的类型:typing.Optional - 因为,
Optional[X] is equivalent to Union[X, None] - 所以,上面的类似等价于
q: Optional[int] = None\
补充2:
- 只要给查询参数默认值
None就表示它是可选查询参数,和类型提示无关。 - 类型提示的功能在于如果该值存在是他应该是什么类型的变量并做类型转换和校验。
到此这篇关于python中fastapi设置查询参数可选或必选的文章就介绍到这了,更多相关python fastapi 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- pytest解读fixtures之Teardown处理yield和addfinalizer方案_python_
- opencv 傅里叶变换的实现_python_
- Python实现信息管理系统_python_
- python实现学员管理系统(面向对象版)_python_
- python实现学生信息管理系统(面向对象)_python_
- Python使用pyecharts控件绘制图表_python_
- Python使用openpyxl模块处理Excel文件_python_
- Python中requests库的用法详解_python_
- Python加密与解密模块hashlib与hmac_python_
- Python日志模块logging用法_python_
