【自用】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添加完配置后,按…

JavaAPI(1)

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

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

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

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;提供定制化的解决方案&…

在函数内部定义函数

【小白从小学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…

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

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…

Golang | Leetcode Golang题解之第547题身份数量

题目&#xff1a; 题解&#xff1a; func findCircleNum(isConnected [][]int) (ans int) {n : len(isConnected)parent : make([]int, n)for i : range parent {parent[i] i}var find func(int) intfind func(x int) int {if parent[x] ! x {parent[x] find(parent[x])}re…

Ardusub中添加自定义控制器

1.建议保留原程序 复制ardupilot文件夹到当前目录&#xff0c;命名为ardupilot_ARDC cp -r ardupilot ardupilot_copy2.切换Sub-4.5版本 Sub-4.1版本libraries里没有AC_CustomControl文件夹&#xff0c;我们需要用到这个文件夹所以需要进行切换分支&#xff0c;在当前ardupi…

ReactPress:重塑内容管理的未来

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议&#xff0c;欢迎一起共建&#xff0c;感谢Star。 ReactPress&#xff1a;重塑内容管理的未来 在当今信息爆炸的时代&#xff0c;一个高效、易用的内容管理系统&#xff0…

云集电商:如何通过 OceanBase 实现降本 87.5%|OceanBase案例

云集电商&#xff0c;一家聚焦于社交电商的电商公司&#xff0c;专注于‘精选’理念&#xff0c;致力于为会员提供超高性价比的全品类精选商品&#xff0c;以“批发价”让亿万消费者买到质量可靠的商品。面对近年来外部环境的变化&#xff0c;公司对成本控制提出了更高要求&…

vue3实现一个无缝衔接、滚动平滑的列表自动滚屏效果,支持鼠标移入停止移出滚动

文章目录 前言一、滚动元素相关属性回顾一、实现分析二、代码实现示例&#xff1a;2、继续添加功能&#xff0c;增加鼠标移入停止滚动、移出继续滚动效果2、继续完善 前言 列表自动滚屏效果常见于大屏开发场景中&#xff0c;本文将讲解用vue3实现一个无缝衔接、滚动平滑的列表自…

三周精通FastAPI:36 OpenAPI 回调

官方文档&#xff1a; OpenAPI 回调 您可以创建触发外部 API 请求的路径操作 API&#xff0c;这个外部 API 可以是别人创建的&#xff0c;也可以是由您自己创建的。 API 应用调用外部 API 时的流程叫做回调。因为外部开发者编写的软件发送请求至您的 API&#xff0c;然后您的…

如何将现有VUE项目所有包更新到最新稳定版

更新有风险,Enter要谨慎!!! 要将项目中的所有 npm 包更新到最新稳定版&#xff0c;可以使用 npm-check-updates 工具。以下是具体步骤&#xff1a; 步骤一&#xff1a;安装 npm-check-updates 首先&#xff0c;全局安装 npm-check-updates 工具&#xff1a; npm install -g…

如何使用 C# 编写一个修改文件时间属性的小工具?

下面是简鹿办公一个用 C# 编写的简单工具&#xff0c;它可以批量修改文件的创建时间、最后访问时间和最后修改时间。我们将使用 .NET Framework 或 .NET Core 来实现这个功能。 完整示例代码 1. 创建一个新的 C# 控制台应用程序 您可以使用 Visual Studio 或 .NET CLI 创建一个…