一文搞定 FastAPI 查询参数

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

  1. 了解大厂经验
  2. 拥有和大厂相匹配的技术等

希望看什么,评论或者私信告诉我!

一、查询参数定义

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

py 复制代码
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 的 ? 后,并以 & 分割,比如:

py 复制代码
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,响应为:

json 复制代码
{"item_id":1,"item_name":"xiaoming"}

3.2. 默认值

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

py 复制代码
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中可以不包含这个参数,属于可有可无

py 复制代码
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 响应为:

json 复制代码
{"item_id":1,"item_name":"xiaoming"}

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

json 复制代码
{"item_id":1}

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

py 复制代码
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端:

py 复制代码
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的结果:

json 复制代码
{'item_id': 1, 'item': {'name': 'flow', 'price': 2.3}}

三、总结

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

相关推荐
2401_854391088 分钟前
高效开发:SpringBoot网上租赁系统实现细节
java·spring boot·后端
Cikiss17 分钟前
微服务实战——SpringCache 整合 Redis
java·redis·后端·微服务
wxin_VXbishe18 分钟前
springboot合肥师范学院实习实训管理系统-计算机毕业设计源码31290
java·spring boot·python·spring·servlet·django·php
Cikiss19 分钟前
微服务实战——平台属性
java·数据库·后端·微服务
ITenderL23 分钟前
Python学习笔记-函数
python·学习笔记
Langchain25 分钟前
不可错过!CMU最新《生成式人工智能大模型》课程:从文本、图像到多模态大模型
人工智能·自然语言处理·langchain·大模型·llm·大语言模型·多模态大模型
zmjia11126 分钟前
全流程Python编程、机器学习与深度学习实践技术应用
python·深度学习·机器学习
OEC小胖胖32 分钟前
Spring Boot + MyBatis 项目中常用注解详解(万字长篇解读)
java·spring boot·后端·spring·mybatis·web
龙的爹233337 分钟前
论文翻译 | Generated Knowledge Prompting for Commonsense Reasoning
人工智能·gpt·机器学习·语言模型·自然语言处理·nlp·prompt
龙的爹233338 分钟前
论文翻译 | Model-tuning Via Prompts Makes NLP Models Adversarially Robust
人工智能·gpt·语言模型·自然语言处理·nlp·prompt