FASTAPI系列 06-Get请求的多参数查询
文章目录
前言
+V lzq599220 送python测试开发视频全套资料 总共80G
本章内容,我将介绍get请求的多参数查询,包含查询参数列表,具备默认值的参数列表,别名参数;
一、查询参数列表
当你使用 Query 显式地定义查询参数时,你还可以声明它去接收一组值,或换句话来说,接收多个值。
例如,要声明一个可在 URL 中出现多次的查询参数book_name,你可以这样写:
from typing import List
from fastapi import FastAPI, Query
from typing import Optional
app = FastAPI()
@app.get("/books/")
async def get_books(book_name: Optional[List[str]] = Query(None)):
query_books = {"book_name": book_name}
return query_books
启动服务,在浏览器中输入:http://127.0.0.1:8000/books/?book_name=java&book_name=git,在路径操作函数的函数参数book_name中以一个 Python list 的形式接收到查询参数 book_name 的多个值(java和 git)因此,该 URL 的响应将会是:
{"book_name":["java","git"]}
二、查询参数列表(带默认值)
可以定义在没有任何给定值时的默认 list 值:
@app.get("/books/")
async def get_books(book_name: Optional[List[str]] = Query(["python", "javascript"])):
query_books = {"book_name": book_name}
return query_books
如代码中所示,替换Query(None)的值, 写入列表,传入[“python”, “javascript”], 当在浏览器中输入http://127.0.0.1:8000/books/时,浏览器返回:
{"book_name":["python","javascript"]}
三、别名参数
我们想要查询参数为重新命名为book_query时,在浏览器中输入:http://127.0.0.1:8000/items/?book_query=python 能查询时,可以用 alias 参数声明一个别名,该别名将用于在 URL 中查找查询参数值:
from typing import List
from fastapi import FastAPI, Query
from typing import Optional
app = FastAPI()
@app.get("/books/")
async def get_books(book_name: Optional[List[str]] = Query(None, alias="book_query")):
query_books = {"book_name": book_name}
return query_books
if __name__ == '__main__':
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
此时,浏览器返回的报文为:
{"book_name":["java"]}
四、 声明更多的元数据以供Docs文档查看
可以添加更多有关该参数的信息,这些信息将包含在生成的 Swagger 模式中,并由文档用户界面和外部工具所使用,可以添加title,description,如下代码所示:
from typing import List
from fastapi import FastAPI, Query
from typing import Optional
app = FastAPI()
@app.get("/books/")
async def get_books(book_name: Optional[List[str]] =
Query(None, title="图书查询",
description="这是一个查询图书名称的get请求",)):
query_books = {"book_name": book_name}
return query_books
if __name__ == '__main__':
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
在Query中 添加title参数,以及description, 在Docs文档中有显示,如图:
总结
通过此章内容你会了解到在get请求中使用list传入多参数,并给参数赋予默认值;在有需要时,给使用alias给参数别名, 当需要描述更多时, 在Query中添加title以及description参数