demo

from fastapi import FastAPIapp = FastAPI()@app.get("/")
async def root():return {"message": "Hello World"}

在终端运行

fastapi dev main.py

结果如下:
在这里插入图片描述
打开http://127.0.0.1:8000:
在这里插入图片描述
交互式API文档:位于http://127.0.0.1:8000/docs
在这里插入图片描述
可选的API文档:位于http://127.0.0.1:8000/redoc
在这里插入图片描述

路径参数

FastAPI 支持使用 Python 字符串格式化语法声明路径参数(变量)

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

这段代码把路径参数 item_id 的值传递给路径函数的参数 item_id
在这里插入图片描述
路径有顺序之分。例如要使用 /users/me 获取当前用户的数据。然后还要使用 /users/{user_id},通过用户 ID 获取指定用户的数据。
由于路径操作是按顺序依次运行的,因此,一定要在 /users/{user_id} 之前声明 /users/me

预设值

路径操作可以使用 Python 的 Enum 类型接收预设的路径参数

class ModelName(str, Enum):# 多重继承,继承str和Enumalexnet = "alexnet"resnet = "resnet"lenet = "lenet"

包含路径的路径参数

在结尾加上:path表示匹配的是路径

from fastapi import FastAPIapp = FastAPI()@app.get("/files/{file_path:path}")
async def read_file(file_path: str):return {"file_path": file_path}

查询参数

声明的参数不是路径参数时,路径操作函数会把该参数自动解释为查询参数。

可选参数

from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id: str, q: str | None = None, short: bool = False):item = {"item_id": item_id}if q:item.update({"q": q})if not short:item.update({"description": "This is an amazing item that has a long description"})return item

将参数默认值设为None即声明可选参数.不声明默认值均为必选参数

布尔类型参数

FastAPI 会按照以下规则进行转换:

转换为 True 的值:
“true” (不区分大小写)
“True”
“TRUE”
“1”
“yes”
“on”
转换为 False 的值:
“false” (不区分大小写)
“False”
“FALSE”
“0”
“no”
“off”
参数不存在时 (使用默认值 False)

from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id: str, q: str | None = None, short: bool = False):item = {"item_id": item_id}if q:item.update({"q": q})if not short:item.update({"description": "This is an amazing item that has a long description"})return item

多个路径和查询参数

FastAPI 可以识别同时声明的多个路径参数和查询参数。而且声明查询参数的顺序并不重要。
FastAPI 通过参数名进行检测:

from fastapi import FastAPIapp = FastAPI()@app.get("/users/{user_id}/items/{item_id}")
async def read_user_item(user_id: int, item_id: str, q: str | None = None, short: bool = False
):item = {"item_id": item_id, "owner_id": user_id}if q:item.update({"q": q})if not short:item.update({"description": "This is an amazing item that has a long description"})return item

访问:http://127.0.0.1:8000/users/1/items/4?q=4&short=0
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92975.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92975.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/92975.shtml

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

相关文章

pytest中的rerunfailures的插件(失败重试)

目录 1-- 安装rerunfailures插件 2-- rerunfailures的使用 3-- 重试案例 安装rerunfailures插件 pip install pytest-rerunfailures点击左下角的控制台面板 输入 pip install pytest-rerunfailures 出现上图的情况就算安装完成了 rerunfailures的使用 可以添加一下参数使用&…

SpringMVC——建立连接

建立连接 将用户(浏览器)和java程序连接起来,也就是访问一个地址能够调用到我们的Spring程序。在 Spring MVC 中使用 RequestMapping来实现URL 路由映射,也就是浏览器连接程序的作用。 1.RequestMapping注解介绍 RequestMapping…

蘑菇云路由器使用教程

1: 手机连接路由器的Wi-Fi,在浏览器输入背面IP地址:192.168.132.1进入路由管理界面1.1: 电脑连接路由器网线在浏览器输入背面IP地址:192.168.132.1进入路由管理界面账号:admin密码:123456782:选择上网模式2.1&#xff…

ubuntu的tar解压指令相关

1. 指令说明参数作用-xextract,解包-z通过 gzip 解压(.tar.gz、.tgz)-vverbose,显示过程-ffile,后面紧跟压缩包文件名2. 什么时候用z参数场景是否加 -z结果.tar.gz / .tgz✅ 必须加 -z正常解压.tar.gz / .tgz❌ 没加 -…

车载诊断刷写 --- Flash关于擦除和写入大小

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

【Verilog HDL 入门教程】 —— 学长带你学Verilog(基础篇)

文章目录一、Verilog HDL 概述1、Verilog HDL 是什么2、Verilog HDL产生的背景3、Verilog HDL 和 VHDL的区别二、Verilog HDL 基础知识1、Verilog HDL 语言要素1.1、命名规则1.2、注释符1.3、关键字1.4、数值1.4.1、整数及其表示1.4.2、实数及其表示1.4.3、字符串及其表示2、数…

SQL Developer Data Modeler:一款免费跨平台的数据库建模工具

SQL Developer Data Modeler 是由 Oracle 公司开发的一款免费的图形化数据建模和数据库设计工具,用于创建、浏览和编辑逻辑模型、关系模型、物理模型、多维模型和数据类型模型。 SQL Developer Data Modeler 既是一个独立的应用程序,同时也被集成到了 Or…

CSS面试题及详细答案140道之(21-40)

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

篇四 tcp,udp客户端服务器编程模型

一 前言 本篇内容主要介绍tcp,udp客户端服务器编程的基础API和示例代码。 二 APIAPI用途使用方socket创建套接字,这是网络通信的桥梁Tcp,udp客户端,服务器bind绑定本地IP地址和端口Tcp,udp客户端,服务器listen监听端口&#xff0c…

ESP32学习笔记_Components(1)——使用LED Strip组件点亮LED灯带

LED strip ESP32-S3 的 RMT(Remote Control Transceiver,远程控制收发器)外设最初设计用于红外收发,但由于其数据格式的灵活性,RMT 可以扩展为通用的信号收发器,能够发送或接收多种类型的信号;…

无人机抛投模块分析

一、设计核心要点1. 结构轻量化与强度平衡 材料选择:主体采用航空铝、碳纤维复合材料,降低自重并保证承重强度。 机械传动优化:齿轮-齿条传动替代传统丝杆结构,简化机构并提升可靠性。 模块化设计:支持多仓位独立控…

【硬件-笔试面试题】硬件/电子工程师,笔试面试题-33,(知识点:二极管结温,热阻,二极管功耗计算)

目录 1、题目 2、解答 步骤一:明确热阻的相关公式 步骤二:计算二极管的功耗 步骤三:计算二极管的结温 3、相关知识点 一、热阻的定义 二、二极管功耗的计算 三、结温的计算 题目汇总版--链接: 【硬件-笔试面试题】硬件…

【LeetCode 热题 100】79. 单词搜索——回溯

Problem: 79. 单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格…

ARM SMMUv3控制器注册过程分析(八)

1.概述 ARM SMMUv3控制器初始化及设备树分析(七)中描述了IOMMU控制器初始化过程。SMMU驱动最后调用iommu_device_register将其注册到内核中,下面分析一下SMMU控制器注册过程中都做了那些工作。 如下图所示,SMMU控制器注册过程中…

Idefics3:构建和更好地理解视觉-语言模型:洞察与未来方向

温馨提示: 本篇文章已同步至"AI专题精讲" Idefics3:构建和更好地理解视觉-语言模型:洞察与未来方向 摘要 视觉-语言模型(VLMs)领域,接收图像和文本作为输入并输出文本的模型,正在快…

利用DeepSeek解决kdb+x进行tpch测试的几个问题及使用感受

上文其实没有成功运行tpch的22个标准查询中的任何一个,因为DeepSeek原始给出的导入语句有错,有一些表没有导入。 1.解决类型及长度问题导致的插入tbl文件到内存表失败。 kdbx的Reference card()提到的基本数据类型如下: Basic datatypes n …

SGLang 核心技术详解

SGLang 作为一个高性能的 LLM 服务框架,通过一系列先进的优化技术实现了卓越的推理性能。下面详细解释其核心功能组件: 1. RadixAttention 用于前缀缓存 核心概念 RadixAttention 是 SGLang 独创的前缀缓存机制,基于 Radix Tree(基…

精密全波整流电路(四)

精密全波整流电路(四) 背景说明 [[精密半波整流电路|半波整流]]虽然能实现交直流信号的转换,但是半波整流只能保留信号半个周期的能量,导致信号能量的利用率不高。 因此,在一些场合需要使用到全波整流电路。 同样的&…

深入解读Prometheus 2.33 Series Chunks压缩特性:原理与实践

深入解读Prometheus 2.33 Series Chunks压缩特性:原理与实践 随着监控指标规模不断增长,Prometheus的本地TSDB存储压力日益增大。为提升存储效率,Prometheus 2.33引入了Series Chunks压缩特性,对时间序列数据在写入和存储时进行深…

SpringBoot整合Liquibase提升数据库变更的可控性、安全性、自动化程度(最详细)

为什么要使用liquibase?- 团队协作与版本管理- 当多人(或多个小组)并行开发、对同一数据库结构进行变更时,如果仅靠手写 SQL 脚本,很 容易产生冲突或漏掉某些变更。- Liquibase 将所有 DDL/DML 操作以“changeset”形式纳入源码管…