当前位置: 首页 > 知识库问答 >
问题:

如何使用FastAPI获取查询参数,包括具有空白值的键?

司空奕
2023-03-14

在上述情况下,名称作为传递,但不设置任何值

我试过用:

Request.query_params

但是,如果值为空,它似乎不会获得< code>name。

共有1个答案

颛孙智勇
2023-03-14

request.query_paramsrequest.url.query(用于获取原始查询字符串)也应该返回带有空白值的键。

在您期望特定键的值的list并且可能在URL中出现多次的情况下,使用request.query(_params)获取键值对字典不会按预期工作。例如,? foo=2

可选参数keep_blank_values是一个标志,指示是否应将百分比编码查询中的空白值视为空白字符串。true值表示应将空白保留为空白字符串。默认值false值表示将忽略空白值并将其视为未包含。

示例

from fastapi import FastAPI, Request
from urllib.parse import parse_qs

app = FastAPI()

@app.get("/")
def main(request: Request):
    q_params = parse_qs(request.url.query, keep_blank_values=True)    
    d = dict((k, v if len(v)>1 else v[0]) 
                for k, v in q_params.items())

    return d

另一方面,如果查询参数是预先已知的,并且不是任意的,那么您总是可以在endpoint中将它们声明为可选参数(请参见查询参数文档)。

 类似资料:
  • 我在JPA repository类中编写了一个查询,如下所示: 上述查询的问题是,如果参数:和都为空,则需要获取所有记录,而这不会发生。到目前为止,没有获取任何记录。 基本上,我希望编写的查询能够正确地适用于所有情况,即参数和都采用空值和非空值。 在这方面,我已经了解了CriteriaBuilder的概念,但无法正确掌握该概念以实现我的案例。 有人能帮忙吗?谢谢 编辑 我已经在控制台中记录了查询,

  • 我正在编写一个Fast API服务器,它接受请求,检查用户是否被授权,如果成功,则将其重定向到另一个URL。 我需要携带URL参数,例如

  • 注意:这个问题与这里的问题不同,因为我需要它来处理Swagger。 给定一个 FastAPI endpoint,我想允许任意一组 URL 参数,同时保持 Swagger 支持。 我的用例是,我想支持一组类似JSON API的查询参数,例如: 方括号的使用阻止了我使用传统的类来建模查询参数,所以我直接使用对象来代替。但是,我想使用Swagger来测试endpoint。我找不到提供任意URL参数的方法

  • 问题内容: 我正在构建一个通用的Web服务,需要将所有查询参数都转换为一个字符串以供以后解析。我怎样才能做到这一点? 问题答案: 您可以通过上下文访问单个参数,也可以通过上下文访问所有参数: 关键是 jax-rs批注,可用于访问: UriInfo,请求,HttpHeaders,SecurityContext,提供程序

  • 我不明白 FastAPI 中的可选查询参数。它与默认值为 的默认查询参数有何不同? 在下面的示例中,arg1和arg2有什么区别?在该示例中,arg2是一个可选的查询参数,如上面的链接所述。

  • 问题内容: 从服务器重定向后,如何在我的routes.jsx文件中定义路由以从Twitter的单点登录过程生成的URL 捕获参数值? 我尝试使用以下路由配置,但没有捕获上述参数: 问题答案: 反应路由器v3 React Router已经为您解析了位置并将其作为道具传递给RouteComponent。您可以通过访问查询(在URL中的?之后)部分 如果要查找路径参数值(在路由器内部用冒号(:)分隔),