FastAPI - 查询参数

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

http://localhost/cgi-bin/hello.py?name=Ravi&age=20

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

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

示例

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

在浏览器中启动 Uvicorn 服务器和这个 URL −

http://localhost:8000/hello?name=Ravi&age=20

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

FastAPI 查询参数

单击Try it out按钮,输入"Ravi"和"20"作为值,然后按Execute执行按钮。 文档页面现在显示 Curl 命令、请求 URL 以及 HTTP 响应的正文和标头。

FastAPI 查询参数

示例

您可以使用 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}

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

FastAPI 查询参数