首页 > 解决方案 > Pydantic 是否接受具有单值和多值的相同查询?

问题描述

我的架构:

class ArticleBase(Schema):
    page: Optional[int] = 1
    topic: Optional[List[str]] = Query(None)

路由器:

@api.get("/articles/", tags = ['Articles'])
def article_list(request, article: ArticleBase = Query(...)):
    return article

我希望 Pydantic/FastAPI 接受具有单个值和多个值的查询。

我希望他们两个都被接受:

www.example.com/articles/?topic=hello&topic=world
www.example.com/articles/?topic=hello

我怎样才能实现它?

我收到的错误消息:

"msg": "value is not a valid list",
"type": "type_error.list"

标签: pythonfastapipydantic

解决方案


通过Optional从我的代码中删除,我设法让它按我想要的方式工作。它接受具有单个值和多个值的查询。

我的工作代码:

class ArticleBase(Schema):
    page: Optional[int] = 1
    topic: List[str] = Query(None)

不明白为什么是这个原因。也许我从文档中遗漏了一些东西,但仔细阅读并没有找到任何相关的东西。


推荐阅读