FastAPI - 查询参数



将请求数据传递到服务器的一种经典方法是将查询字符串附加到 URL。假设服务器上的 Python 脚本 (hello.py) 作为CGI执行,由与号 (&) 连接的一系列键值对构成查询字符串,通过添加问号 (?) 作为分隔符将其附加到 URL。例如:

https://127.0.0.1/cgi-bin/hello.py?name=Ravi&age=20

URL 的尾部,在 (?) 之后,是查询字符串,然后由服务器端脚本解析以进行进一步处理。

如前所述,查询字符串是由 & 符号连接的参数=值对列表。FastAPI 自动将端点中不是路径参数的部分视为查询字符串,并将其解析为参数及其值。这些参数传递给操作装饰器下面的函数。

示例

from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
async def hello(name:str,age:int):
   return {"name": name, "age":age}

启动 Uvicorn 服务器并在浏览器中输入此 URL:

https://127.0.0.1:8000/hello?name=Ravi&age=20

您应该会得到相同的 JSON 响应。但是,检查表明 FastAPI 检测到 /hello 端点没有路径参数,但有查询参数。

FastAPI Query Parameters

点击试一下按钮,输入“Ravi”和“20”作为值,然后按下执行按钮。文档页面现在显示 Curl 命令、请求 URL 以及 HTTP 响应的主体和标头。

FastAPI Query Parameters

示例

您可以使用 Python 的类型提示为要装饰的函数的参数进行定义。在这种情况下,将 name 定义为 str,将 age 定义为 int。

from fastapi import FastAPI
app = FastAPI()
@app.get("/hello/{name}")
async def hello(name:str,age:int):
   return {"name": name, "age":age}

尝试输入 https://127.0.0.1:8000/docs 作为 URL。这将打开 Swagger UI (OpenAPI) 文档。参数 'name' 是路径参数,'age' 是查询参数。

FastAPI Query Parameters
广告