FastAPI中逗号分隔查询参数列表的处理方法
在使用FastAPI构建API时,经常需要处理多个可选参数,例如根据多个ID或状态筛选数据。直接使用列表类型作为查询参数,FastAPI会将每个列表元素解析成独立参数,导致URL冗长。本文介绍如何将列表参数以逗号分隔的形式传递,而非多个同名键值对。
例如,source参数期望接收多个枚举值,但FastAPI默认解析成多个source参数(例如:source=manual&source=vdna,而非source=manual,vdna)。
解决方法主要有两种:
方法一:字符串类型及后端解析
将参数类型声明为Optional[str],在后端代码中使用split(",")函数解析逗号分隔字符串。
from fastapi import APIRouter, Query
from typing import Optional
# ...其他代码...
@review.get('/list', summary='获取待审核列表')
def list_await_review(
# ...其他参数...
source: Optional[str] = Query(None, description="请使用逗号`,`分割多个参数,例如:`Manual,vDNA,text-match`"),
# ...其他参数...
):
parsed_source = source.split(",") if source else []
# ...后续处理parsed_source...
此方法简单易懂,但需在参数描述中明确说明参数格式。
方法二:自定义参数解析逻辑 (此处略)
虽然可以使用依赖注入自定义解析逻辑,但为简便起见,此处不展开。此方法更灵活,可处理更复杂的解析逻辑,但代码复杂度也更高。
选择哪种方法取决于具体应用场景和开发者偏好。 方法一适用于大多数简单场景,方法二则适用于更复杂的需求。 通过以上方法,可以使URL更简洁易读。
以上就是FastAPI如何优雅地处理逗号分隔的查询参数列表?的详细内容,更多请关注知识资源分享宝库其它相关文章!
版权声明
本站内容来源于互联网搬运,
仅限用于小范围内传播学习,请在下载后24小时内删除,
如果有侵权内容、不妥之处,请第一时间联系我们删除。敬请谅解!
E-mail:dpw1001@163.com
发表评论