【自用】fastapi 学习记录 --请求和参数部分

fastai个人学习笔记

一、模块化结构框架

在这里插入图片描述
在这里插入图片描述
设置了默认请求头shop之后就无需再app0x里接口函数前全部写上/shop/xxx,或者/user/xxx,他会同意添加~如果都写了就会出现以下的情况(重复shop):
在这里插入图片描述

二、请求与响应

关于参数:

常见的请求参数类型包括:

  • 查询参数(Query Parameters):

以键值对形式附加在 URL 末尾,用于过滤、排序或限制请求结果。

  • 路径参数(Path Parameters):

URL 中,用作资源的唯一标识或区分资源间的细微差异。

  • 请求体参数(Body Parameters):

包含在请求体中,传递复杂或大量数据,如表格数据或 JSON 对象。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_60166861/article/details/142456766

2.1 路径参数

在这里插入图片描述
路径传送给路由函数的变量都是字符串,同时观察到,return的数据也可以以列表的形式return回来。
如果强制设置传入的参数的类型,可以在变量接收后传入函数参数时进行类型转换(id:int)
在这里插入图片描述(1)指定多个数据类型的时候,使用union关键字
在这里插入图片描述
(2)type hints 主要是要指示函数的输入和输出的数据类型,数据类型在typing 包中,基本类型有str list dict等等Union 是当有多种可能的数据类型时使用,比如函数有可能根据不同情况有时返回str或返回list,那么就可以写成Union[list,str],Optional 是Union的一个简化,当数据类型中有可能是None时,比如有可能是str也有可能是None,则Optional[str], 相当于Union[str, None]
在这里插入图片描述

当路径参数存在,应该在函数的参数上接收同名变量!即存在一个{},设置接口函数就应该有花括号内的参数作为函数参数!

使用表单接收参数
在这里插入图片描述
在这里插入图片描述

有路径参数才能有同名变量
另一个需要注意的点:在做 路由匹配的时候回根据设置请求函数代码的顺序从上到下匹配请求
在这里插入图片描述
因为/user/1符合第一条路径接口函数就自动执行了,不会匹配/user/{id}当id=1的内容:
在这里插入图片描述

2.2、查询参数(请求参数)

路径函数中声明 不属于路径参数的其他函数参数时,它们将被自动解释为"查询字符串"参数,就是 url中? 之后用$分割的 key-value键值对
post请求也有查询参数。

2.2.1 设置参数模型:

1. Field包:指定参数范围。

def Field( default: Any = Undefined 大,
default_factory:0ptional[NoArgAnyCallable]= None, #默认值
alias:str = None,
title: str = None,
description:str =None, #详细描述
exclude:> Union[‘AbstractSetIntStr’‘MappingIntStrAny’,Any]= None
include:> Union[‘AbstractSetIntStr’MappingIntStrAny’, Any]=None,
const: bool => None
gt:float = None,#大于
ge: float = None
lt#小于
regex #正则表达式

gt是大于lt是小于,以下age的定义是age定义区域在1~100之间默认值是0
在这里插入图片描述

2. 校验规则:还可以设置校验函数
在这里插入图片描述通过装饰器进行限定,函数参数中cls、v分别代表,传入的传入的对象是类别对象不是实例对象,v是指当前传入的参数。
使用isalpha()函数说明的传入的变量是检查v检查字符串是否只包含字母字符,并且改校验函数必须要记得return原来的值v:
在这里插入图片描述
assert关键字不知道如何使用可以查看文末:## python查漏补缺 1.assert关键字

List[int]:指定list中只能存int类型的数据,在注入的时候会自动做类型转换。

当直接返回一个对象的时候,fastapi会自动将对象进行序列化
不同的basemodel数据模型可以嵌套使用。

python查漏补缺

1.assert关键字
此语句接受一个布尔条件作为输入,当返回True时,不做任何事情并继续正常的执行流程,但如果计算结果为False,则引发AssertionError。

带有error_message参数的assert:

a = 4
b = 0# using assert to check for 0
print("The value of a / b is : ")
assert b != 0, "Zero Division Error"
print(a / b)

输出:

AssertionError: Zero Division Error

应用例子:
在这里插入图片描述

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

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

相关文章

若依入门案例

若依(RuoYi)框架是一个基于Java的开源企业级快速开发框架,主要用于构建信息管理系统。它结合了多种前端和后端技术,提供了高效的开发工具,并具备以下主要功能: 一、后端功能 技术选型:若依后端…

【Web前端】OOP编程范式

面向对象编程(Object-Oriented Programming,简称 OOP)是一种程序设计思想,它通过将程序视为一组相互作用的对象来设计程序。OOP 提出了一些重要的基本概念,包括类与实例、继承和封装。面向对象编程将系统视为由多个对象…

Mac解决 zsh: command not found: ll

Mac解决 zsh: command not found: ll 文章目录 Mac解决 zsh: command not found: ll解决方法 解决方法 1.打开bash_profile 配置文件vim ~/.bash_profile2.在文件中添加配置:alias llls -alF键盘按下 I 键进入编辑模式3. alias llls -alF添加完配置后,按…

JavaScript 变量声明

const 和 let 都是在 JavaScript ES6 中引入的变量声明方式,它们之间的主要区别在于 是否允许重新赋值 和 作用域。 1. 是否可以重新赋值 let:声明的变量可以在后续代码中被重新赋值。const:声明的变量不能被重新赋值。声明时必须初始化&am…

JavaAPI(1)

Java的API(1) 一、Math的API 是一个帮助我们进行数学计算的工具类私有化构造方法,所有的方法都是静态的(可以直接通过类名.调用) 平方根:Math.sqrt()立方根:Math.cbrt() 示例: p…

UI界面设计入门:打造卓越用户体验

互联网的迅猛发展催生了众多相关职业,其中UI界面设计师成为互联网行业的关键角色之一。UI界面设计无处不在,影响着网站、应用程序以及其他数字平台上的按钮、菜单布局、色彩搭配和字体排版等。UI设计不仅仅是字体、色彩和导航栏的组合,它的意…

python查询日志,并组装sql,修复缺失的数据

前言 由于mysql链接超时波动,导致数据缺失,需要根据日志填补数据 流程 获取确实数据的订单列表 搜索日志,获取请求日志 根据请求日志拼装sql 打印sql供修复数据 代码 因为我们日志打印的有问题,所以这里用字符串截取获取入…

利用Stable Diffusion技术,StableVision能够自动生成高质量、高分辨率的图像,满足用户对于图像素材的多样化需求。

1.产品介绍 产品介绍方案 产品名称: StableVision 图像管理分析系统 主要功能: 高精度图像生成智能分类与检索多维度数据分析定制化模板与导出功能介绍: 高精度图像生成: 具体作用:利用Stable Diffusion技术,StableVision能够自动生成高质量、高分辨率的图像,满足用户…

用户信息管理系统烟草种植用户基于SpringBootSSM框架

目录 一. 系统目标 二 需求分析 2.1 功能描述 2.1.1 用户管理 2.1.2 管理员功能 2.1.3 角色与权限管理 2.1.4 详细功能描述 2.1.5安全与权限控制功能 2.1.6系统维护与扩展功能 2.2. 非功能需求 2.3用户角色 2.4技术描述 三、数据库设计 3.1数据库需求分析 3.2数…

std::back_inserter

std::back_inserter 是 C 标准库中的一个函数模板&#xff0c;它用于创建一个插入迭代器&#xff08;insert iterator&#xff09;&#xff0c;这个迭代器可以在容器末尾插入新元素。它定义在 <iterator> 头文件中。 函数原型 template <typename Container> bac…

在 Mac 和 Windows 系统中快速部署 OceanBase

OceanBase 是一款分布式数据库&#xff0c;具备出色的性能和高扩展性&#xff0c;可以为企业用户构建稳定可靠、灵活扩展性能的数据库服务。本文以开发者们普遍熟悉的Windows 或 Mac 环境为例&#xff0c;介绍如何快速上手并体验OceanBase。 一、环境准备 1. 硬件准备 OceanB…

如何有效销售和应用低代码软件?探索其市场机会与策略

随着技术的进步&#xff0c;企业对自动化和数字化的需求日益增加。低代码开发平台应运而生&#xff0c;成为企业实现快速应用程序开发的重要工具。然而&#xff0c;在市场上推广和应用低代码软件并非易事&#xff0c;需要深入了解客户需求&#xff0c;提供定制化的解决方案&…

Docker启动gitlab后22端口被占用如何解决

文章目录 前言Docker启动参数解决方案总结 前言 这两天一直在研究Docker启动gitlab的问题&#xff0c;邮件问题暂时告一段落&#xff0c;当真正开始使用gitlab克隆的时候发现&#xff0c;之前22端口被占用无法启动&#xff0c;我就用2022端口做了一个映射&#xff0c;但是在gi…

【如何使用 ADB 脚本批量停止 Android 设备上的所有应用】

在 Android 开发和测试中,有时候我们需要批量停止设备上的所有应用进程。为此,我们可以使用一个简单的 ADB 脚本来自动完成这一任务。本文将介绍如何编写和使用这个脚本。 脚本介绍 下面的脚本通过 ADB 命令来列出并停止所有正在运行的 Android 应用进程。无需指定设备时,默…

在函数内部定义函数

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 在函数内部定义函数 在以下代码片段中&#xff0c;输出的结果是什么&#xff1f; def outer_function(x): def inner_function(y): return x y return inner_function add_five outer_func…

Go语言的接口示例

Go语言的接口(interface)是一种轻量级的多态性实现方式,是构建高扩展性、高复用性代码的利器。Go语言的接口非常灵活,不要求显式的实现声明,只要一个类型实现了接口规定的方法,它就可以被视为该接口的实现者。在本篇博客中,我们将通过多个实际示例,探讨Go语言接口的使用…

ffmpeg命令

1. 修改视频的数据速率 ffmpeg.exe -i video.mp4 -r 30 -c:v libx264 -b:v 1500k output.mp42. mp4与h264互相转换 ffmpeg.exe -i a.mp4 -vcodec h264 output.h264 ffmpeg.exe -i output.h264 -vcodec mpeg4 output.mp4

图论基础--孤岛系列

孤岛系列有&#xff1a; 孤岛总面积求解&#xff08;用了dfs、bfs两种方法&#xff09;和沉没孤岛&#xff08;这里只写了dfs一种&#xff09; 简单解释一下&#xff1a; 题目中孤岛的定义是与边缘没有任何接触的&#xff08;也就是不和二维数组的最外圈连接&#xff09;&…

LabVIEW气体检测系统

随着工业化进程的加速&#xff0c;环境污染问题愈加严峻&#xff0c;尤其是有害气体的排放对人类生存环境构成了严重威胁。为了更好地监测这些有害气体&#xff0c;开发一个高效、准确且易于操作的气体检测系统显得尤为重要。LabVIEW软件开发的气体检测系统&#xff0c;采用激光…

【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作

目录 一、安装Zookeeper 二、配置Zookeeper集群 三、Zookeeper服务的启动与关闭 四、Zookeeper的shell操作 前情提要&#xff1a;延续上篇【Hadoop和Hbase集群配置】继续配置Zookeeper&#xff0c;开启三台虚拟机Hadoop1、Hadoop2、Hadoop3&#xff0c;进入终端&#xff0c…