一文搞定FastAPI中的查询参数,


目录
  • 一、查询参数定义
  • 二、查询参数作用
  • 三、查询参数基本使用
    • 3.1. URL拼接和必需参数
    • 3.2. 默认值
    • 3.3. 可选参数
    • 3.4. Pydantic 模型( 请求体 )作为查询参数
  • 三、总结

    一、查询参数定义

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

    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查询参数内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

    您可能感兴趣的文章:
    • 一文带你吃透FastAPI中的路径参数
    • Python FastAPI 多参数传递的示例详解
    • python中fastapi设置查询参数可选或必选
    • Python 搭建 FastAPI 项目的详细过程
    • Python利用fastapi实现上传文件
    • 使用Python FastAPI构建Web服务的实现

    评论关闭