一文搞定FastAPI中的查询参数

 更新时间:2024年03月27日 10:12:32   作者:shengjk1  
FastAPI中最核心的之一就是路径参数,所以这篇文章小编主要来和大家介绍一下FastAPI查询参数的作用以及基本使用,有需要的小伙伴可以参考下

一、查询参数定义

路径操作函数中,不是路径参数的其他参数,就是查询参数。比如:

from fastapi import FastAPI

app = FastAPI()

@app.get( "/items" )
def read_item(item_id:int,item_name:str):
    return { "item_id" : item_id,"item_name":item_name}
     
    
if __name__ == "__main__" :
    import uvicorn
    uvicorn.run( "quickstart.demo:app" ,reload=True ,port= 8001)

item_id,item_name 都不是路径参数,所以它就是查询参数。

二、查询参数作用

方便给 路径操作函数 传参

三、查询参数基本使用

3.1. URL拼接和必需参数

查询参数,一般是在 URL 的 ? 后,并以 & 分割,比如:

from fastapi import FastAPI

app = FastAPI()

@app.get( "/items" )
def read_item(item_id:int,item_name:str):
    return { "item_id" : item_id,"item_name":item_name}
     
    
if __name__ == "__main__" :
    import uvicorn
    uvicorn.run( "quickstart.demo:app" ,reload=True ,port= 8001)

此时 item_iditem_name 都是必需的,URL必须传这两个参数。启动程序,然后在浏览器中访问 http://127.0.0.1:8001/items?item_id=1&item_name=xiaoming,响应为:

{"item_id":1,"item_name":"xiaoming"}

3.2. 默认值

查询参数可以设置默认值,如:item_name 默认值为 xiaoming

from fastapi import FastAPI

app = FastAPI()

@app.get( "/items" )
def read_item(item_id:int,item_name:str='xiaoming'):
    return { "item_id" : item_id,"item_name":item_name}
     
    
if __name__ == "__main__" :
    import uvicorn
    uvicorn.run( "quickstart.demo:app" ,reload=True ,port= 8001)

访问 http://127.0.0.1:8001/items?item_id=1&item_name=xiaoming 和访问 http://127.0.0.1:8001/items?item_id=1 他们的结果都是一样的。因为URL 中不设置 item_name 的值,它会用默认值来填充。

3.3. 可选参数

查询参数可以设置为可选参数,如 item_name=None 可选参数的意思:URL中可以不包含这个参数,属于可有可无

from fastapi import FastAPI

app = FastAPI()

@app.get( "/items" )
def read_item(item_id:int,item_name:str=None):
    if item_name:
        return { "item_id" : item_id,"item_name":item_name}
    else:
        return { "item_id" : item_id}
     
    
if __name__ == "__main__" :
    import uvicorn
    uvicorn.run( "quickstart.demo:app" ,reload=True ,port= 8001)

访问 http://127.0.0.1:8001/items?item_id=1&item_name=xiaoming 响应为:

{"item_id":1,"item_name":"xiaoming"}

和访问 http://127.0.0.1:8001/items?item_id=1 响应为:

{"item_id":1}

3.4. Pydantic 模型( 请求体 )作为查询参数

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float
    
@app.put( "/items/{item_id}" )
def  put_item(item_id:int,item:Item):
    return { "item_id" : item_id, "item" :item}

if __name__ == "__main__" :
    import uvicorn
    uvicorn.run( "quickstart.demo:app" , reload=True, port=8001)

Client端:

import requests

data={ "name" : "flow" , "price" :2.3}

respone=requests.put( "http://127.0.0.1:8001/items/1" ,json=data)
print(respone.json())

respone的结果:

{'item_id': 1, 'item': {'name': 'flow', 'price': 2.3}}

三、总结

本文详细介绍了查询参数在FastAPI中的基本使用方法,包括URL拼接和必需参数、默认值、可选参数和Pydantic模型作为查询参数的使用。通过这些方法,可以灵活地处理和传递查询参数,实现更丰富的功能需求。

到此这篇关于一文搞定FastAPI中的查询参数的文章就介绍到这了,更多相关FastAPI查询参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django+Ajax异步刷新/定时自动刷新实例详解

    Django+Ajax异步刷新/定时自动刷新实例详解

    AJAX是前端技术的集合,包括JavaScript、XML、HTML、CSS等,下面这篇文章主要给大家介绍了关于Django+Ajax异步刷新/定时自动刷新的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • tf.truncated_normal与tf.random_normal的详细用法

    tf.truncated_normal与tf.random_normal的详细用法

    本篇文章主要介绍了tf.truncated_normal与tf.random_normal的详细用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 一篇文章带你了解python正则表达式的正确用法

    一篇文章带你了解python正则表达式的正确用法

    这篇文章主要介绍了Python中正则表达式的详细教程,正则表达式是Python学习进阶当中的重要内容,需要的朋友可以参考下
    2021-08-08
  • 利用python检查磁盘空间使用情况的代码实现

    利用python检查磁盘空间使用情况的代码实现

    本文将向读者展示如何利用Python编写自动化脚本,以检查磁盘空间使用情况,无论你是经验丰富的系统管理员,还是对Python自动化充满兴趣的开发者,本文都将为你提供实用的脚本示例和详细的解析步骤,帮助你快速掌握磁盘空间监控的自动化方法,需要的朋友可以参考下
    2024-08-08
  • 导入tensorflow时报错:cannot import name ''abs''的解决

    导入tensorflow时报错:cannot import name ''abs''的解决

    这篇文章主要介绍了导入tensorflow时报错:cannot import name 'abs'的解决,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • pygame实现井字棋之第二步逻辑实现

    pygame实现井字棋之第二步逻辑实现

    这篇文章主要介绍了pygame实现井字棋之第二步逻辑实现,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • Python读取xlsx文件的实现方法

    Python读取xlsx文件的实现方法

    这篇文章主要介绍了Python读取xlsx文件的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python生成ubuntu apt镜像地址实现

    Python生成ubuntu apt镜像地址实现

    本文主要介绍了Python生成ubuntu apt镜像地址实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Python判断变量是否是None写法代码实例

    Python判断变量是否是None写法代码实例

    这篇文章主要介绍了Python判断变量是否是None写法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 聊聊python中的load、loads实现反序列化的问题

    聊聊python中的load、loads实现反序列化的问题

    在python自动化中,我们传递一些参数是需要从文件中读取过来的,读取过来的字典并非python对象数据类型而是string类型。本文给大家分享python中的load、loads实现反序列化的问题,感兴趣的朋友一起看看吧
    2021-10-10

最新评论