fastApi笔记01-路径参数

news/2025/2/22 6:23:21/

路径参数

使用与 Python 格式化字符串相同的语法来声明路径"参数"或"变量"

from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
def read_item(item_id):return {"item_id": item_id}

http://127.0.0.1:8000/items/foo

路径中变量名与方法中的参数名一致时,会认为这个参数是路径参数。

请求路径里面的值就是路径参数的值。比如上面请求路径items/foo。foo就是read_item()方法item_id这个路径参数的值

有类型的路径参数

使用标准的python类型标注为函数中的路径参数声明类型,为函数提供编辑器支持,包括错误检查、代码补全等

from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
def read_item(item_id: int):return {"item_id": item_id}

数据校验

通过python类型声明,FastApi提供了数据校验

这时候再访问http://127.0.0.1:8000/items/foo会报错,提示路径参数item_id,应该是个int类型,但是使用了str类型。

数据转换

http://127.0.0.1:8000/items/3这时返回的item_id的值是int类型的3

FastAPI 通过上面的类型声明提供了对请求的自动"解析",将来自http请求中的字符串转换成了int

预设值

如果你有一个接收路径参数的路径操作,但你希望预先设定可能的有效参数值,则可以使用标准的 Python Enum 类型。

from enum import Enumfrom fastapi import FastAPIclass ModelName(str, Enum):  # 通过继承str,API文档会知道这些枚举必须全都是string类型al = "test"re = "test11"le = "test222"app = FastAPI()@app.get("/models/{model_name}")
def get_model(model_name: ModelName):  # 使用定义的枚举类创建一个带有类型标注的路径参数if model_name is ModelName.al:  # 比较枚举成员return {"model_name": model_name, "message": "Deep Learning FTW!"}if model_name.value == "test222":  # 获取枚举值来比较return {"model_name": model_name, "message": "LeCNN all the images"}return {"model_name": model_name, "message": "Have some residuals"}

get_model()函数中model_name这个路径参数定义的类型是ModelName这个枚举类。

在请求时,使用对应枚举的值,比如models/test。但是在get_mode这个方法处理时,test会转换成对应的枚举al。


http://www.ppmy.cn/news/1357026.html

相关文章

Security6.2 中的SpEL 表达式应用(权限注解使用)

最近学习若依框架,里面的权限注解涉及到了SpEL表达式 PreAuthorize("ss.hasPermi(system:user:list)"),若依项目中用的是自己写的方法进行权限处理, 也可以只用security 来实现权限逻辑代码,下面写如何用security 实现。…

Transformer面试十问

1 Scaled Dot-Product Attention中为什么要除以 d k \sqrt{d_k} dk​ ​? 1. 从纯数学上考虑:对于输入均值为0,方差为1的分布,点乘后结果其方差为dk,所以需要缩放一下。下图为原论文注释。 2. 从神经网络上考虑:防止在计算点积…

基于python+django+vue.js开发的健身房管理系统

功能介绍 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。 功能包括:教练管理、会员管理、场地管理、设备管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.com/geeeeeeeek/python_…

爬虫学习笔记-scrapy爬取电影天堂(双层网址嵌套)

1.终端运行scrapy startproject movie,创建项目 2.接口查找 3.终端cd到spiders,cd scrapy_carhome/scrapy_movie/spiders,运行 scrapy genspider mv https://dy2018.com/ 4.打开mv,编写代码,爬取电影名和网址 5.用爬取的网址请求,使用meta属性传递name ,callback调用自定义的…

openGauss学习笔记-220 openGauss性能调优-确定性能调优范围-查询最耗性能的SQL

文章目录 openGauss学习笔记-220 openGauss性能调优-确定性能调优范围-查询最耗性能的SQL220.1 操作步骤 openGauss学习笔记-220 openGauss性能调优-确定性能调优范围-查询最耗性能的SQL 系统中有些SQL语句运行了很长时间还没有结束,这些语句会消耗很多的系统性能&…

【机器学习案例4】为机器学习算法编码分类数据【含源码】

目录 编码分类数据 序数编码 标签编码 一次性编码 目标编码 目标编码的优点 目标编码的缺点 在现实生活中,收集的原始数据很少采用我们可以直接用于机器学习模型的格式,即数值型数据。因此,需要进行一些预处理,以便以正确的格式呈现数据、选择信息丰富的数据或降低其…

sql报错注入 之 floor 函数报错:主键重复

Mysql报错注入之floor报错详解 updatexml extractvalue floor 是mysql的函数 groupbyrandfloorcount 一、简述 利用 select count(*),(floor(rand(0)*2))x from table group by x,导致数据库报错,通过 concat 函数,连接注入语句与 floor…

thinkphp5.0提示不支持redis,not support: redis

安装PHP扩展 例如宝塔,其他环境请用命令行,安装 redis配置完成以后,修改php.ini把redis扩展打开即可,重启环境