fastApi笔记01-路径参数

路径参数

使用与 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.mzph.cn/news/695852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringSecurity安全框架

我们使用这个springSecurity安全框架,作用是认证,授权,将用户的权限和对应的资源进行绑定,默认的是在内存中保存的,实际开发中,是需要根据项目业务的需求对某些方法进行重写,使数据库中权限对应的资源进行绑定,就是查看当前登录的用户所扮演的角色,该角色有哪些权限 授权 1内…

【操作系统】

计算机操作系统 计算机是如何让用户得到好的体验什么是操作系统(OS)操作系统如何管理 计算机是如何让用户得到好的体验 计算机系统是由计算机硬件和软件组成的。用户使用计算机,比如在文本文件填写内容,通过邮箱发送邮件&#xf…

Aloudata StarRocks 直播预告:指标平台的物化加速实践

数据指标的管理、研发和应用一直存在着诸多痛点,这些挑战促使了对指标平台解决方案的需求不断增长。2月29日(星期四)19:00,Aloudata 将与 StarRocks 携手举办线上直播,深入揭秘第三代指标平台物化加速的强大能力&#…

大蟒蛇(Python)笔记(总结,摘要,概括)——第10章 文件和异常

目录 10.1 读取文件 10.1.1 读取文件的全部内容 10.1.2 相对文件路径和绝对文件路径 10.1.3 访问文件中的各行 10.1.4 使用文件的内容 10.1.5 包含100万位的大型文件 10.1.6 圆周率中包含你的生日吗 10.2 写入文件 10.2.1 写入一行 10.2.2 写入多行 10.3 异常 10.3.1 处理Ze…

基于springboot+vue的课程答疑系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

外站群服务器的特性及使用优势

随着互联网的快速发展,站群服务器在网站运营中扮演着越来越重要的角色。相较于国内站群服务器,国外站群服务器因其独特的特性和使用优势,受到了众多网站管理员的青睐。本文将对国外站群服务器的特性及使用优势进行科普介绍。 一、国外站群服务…

【Spring Cloud】实现微服务调用的负载均衡

文章目录 什么是负载均衡自定义实现负载均衡启动shop-product微服务通过nacos查看微服务的启动情况自定义实现负载均衡 基于Ribbon实现负载均衡添加注解修改服务调用的方法Ribbon支持的负载均衡策略通过修改配置来调整 Ribbon 的负载均衡策略通过注入Bean来调整 Ribbon 的负载均…

JS进阶——解构赋值

数组解构 基本: let [a, b, c] [1, 2, 3]; // a 1 // b 2 // c 3 可嵌套 let [a, [[b], c]] [1, [[2], 3]]; // a 1 // b 2 // c 3 可忽略 let [a, , b] [1, 2, 3]; // a 1 // b 3 不完全解构 let [a 1, b] []; // a 1, b undefined 剩余运…

如何创造价值写给自己的笔记

人工智能统领全文 在深入探讨这篇概述之前,我们首先需要理解一个核心观点:生产力的进步与生产关系的变革是相辅相成的。这一点在历史的长河中不断得到验证,从工业时代到信息时代,再到如今由人工智能引领的新时代,每一…

探索D咖智能饮品机器人的工作原理:科技、材料与设计的相互融合

智能饮品机器人是近年来随着人工智能和自动化技术的发展而崭露头角的一种创新产品。它将科技、材料和设计相互融合,为消费者带来了全新的饮品体验。下面D咖来探索智能饮品机器人的工作原理,以及科技、材料和设计在其中的作用。 首先,智能饮品…

Observability:使用 OpenTelemetry 和 Elastic 监控 OpenAI API 和 GPT 模型

作者: 来自 Elastic David Hope ChatGPT 现在非常火爆,甚至席卷了整个互联网。 作为 ChatGPT 的狂热用户和 ChatGPT 应用程序的开发人员,我对这项技术的可能性感到非常兴奋。 我看到的情况是,基于 ChatGPT 的解决方案将会呈指数级…

Docker本地部署Rss订阅工具并实现公网远程访问

文章目录 1. Docker 安装2. Docker 部署Rsshub3. 本地访问Rsshub4. Linux安装Cpolar5. 配置公网地址6. 远程访问Rsshub7. 固定Cpolar公网地址8. 固定地址访问 Rsshub是一个开源、简单易用、易于扩展的RSS生成器,它可以为各种内容生成RSS订阅源。 Rsshub借助于开源社…

如何在OpenWRT安装内网穿透工具实现远程访问本地搭建的web网站界面

文章目录 前言1. 检查uhttpd安装2. 部署web站点3. 安装cpolar内网穿透4. 配置远程访问地址5. 配置固定远程地址 前言 uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器,目的是成为优秀稳定的、适合嵌入式设备的轻量级任务的 HTTP 服务器,并且和…

【k近邻】Kd树构造与最近邻搜索示例

【k近邻】 K-Nearest Neighbors算法原理及流程 【k近邻】 K-Nearest Neighbors算法距离度量选择与数据维度归一化 【k近邻】 K-Nearest Neighbors算法k值的选择 【k近邻】 Kd树的构造与最近邻搜索算法 【k近邻】 Kd树构造与最近邻搜索示例 近邻法的实现需要考虑如何快速搜索个最…

第5讲:数组

第5讲:数组 1. 数组的概念2. 一维数组的创建和初始化2.1 数组创建2.2 数组的初始化2.3 数组的类型 3. ⼀维数组的使用3.1 数组下标3.2 数组元素的打印3.3 数组的输入 4. ⼀维数组在内存中的存储5. sizeof计算数组元素个数6. 二维数组的创建6.1 二维数组的概念6.2 二维数组的创建…

npm i卡在 idealTree buildDeps没反应的解决方案

通过git clone拉下项目后,进行项目的初始化下包时,发现npm i 并没有反应(如图): 关键点:IdealTree 1.网络问题 确保你的网络连接正常,能够正常访问 npm 仓库。有时网络问题可能导致包无法正确…

游戏同步+游戏中的网络模块

原文链接:游戏开发入门(九)游戏同步技术_游戏数据同步机制流程怎么开发-CSDN博客 游戏开发入门(十)游戏中的网络模块_游戏开发组网-CSDN博客 3.同步技术的基本常识: a.同步给谁?某个用户&…

骨传导蓝牙耳机哪个好?六大精选购买技巧与规避常见陷阱指南

随着无线技术的飞速进步,蓝牙耳机已穿插在我们日常生活的每一处,成为常用的无线设备之一。而骨传导蓝牙耳机这一新科技产物近年来崭露头角。采用骨传导技术的耳机能通过头骨直接将声音传送至内耳,激活听觉神经,让声音直达听觉中枢…

http和https的区别(简述)

HTTP(HyperText Transfer Protocol)和HTTPS(HTTP Secure)都是用于在客户端和服务器之间传输数据的协议,但它们在安全性方面有重要的区别。 1.HTTP: 概述: HTTP是一种用于传输超文本的协议(超文…

opencv从视频文件读取视频内容,从摄像头读取保存视频内容

文章目录 一、argparse模块1. 定义2. 讲解 二、读取、处理、保存图片1.读取图片2.灰度处理3.保存图片 三、读取摄像头、视频文件1.从摄像头读取2.从视频文件读取视频内容3.保存从摄像头读取的视频 一、argparse模块 1. 定义 (1)argparse模块使编写用户…