FastAPI - 查询参数


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

http://localhost/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 -

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

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

FastAPI 查询参数

单击“尝试”按钮,输入“Ravi”和“20”作为值,然后按“执行”按钮。文档页面现在显示 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 查询参数