FASTAPI系列 06-Get请求的多参数查询

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参数

更多资料,请关注公众号 ,发送666 即刻领取相关python开发资料~

在这里插入图片描述

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值