FastAPI中逗号分隔查询参数列表的处理方法
在使用FastAPI构建API时,经常需要处理多个可选参数,例如根据多个ID或状态筛选数据。直接使用列表类型作为查询参数,FastAPI会将每个列表元素解析成独立参数,导致URL冗长。本文介绍如何将列表参数以逗号分隔的形式传递,而非多个同名键值对。
例如,source参数期望接收多个枚举值,但FastAPI默认解析成多个source参数(例如:source=manual&source=vdna,而非source=manual,vdna)。
解决方法主要有两种:
方法一:字符串类型及后端解析
将参数类型声明为Optional[str],在后端代码中使用split(“,”)函数解析逗号分隔字符串。
from fastapi import APIRouter, Queryfrom 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如何优雅地处理逗号分隔的查询参数列表?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3170462.html