本篇内容主要讲解“python中fastapi怎么设置查询参数可选或必选”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python中fastapi怎么设置查询参数可选或必选”吧!
前言:
在fastapi中,我们定义的查询参数是可以设置成:必选参数 or 可选参数。
z只要给查询参数的默认值设置为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怎么设置查询参数可选或必选”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。