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

news/2024/11/6 3:27:16 标签: fastapi, 学习, redis

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.niftyadmin.cn/n/5740112.html

相关文章

2024年专业的10款数据恢复工具你都用过哪些?

数据丢失是很多人在生活中都会出现的问题,但想真多情况下都不是什么难题。因为有很多的数据恢复软件可以进行数据恢复。于是我根据工具的恢复成功率, 工具的兼容性、易用性以及恢复数据的种类和安全性这些因素,在网上搜罗了一些好用的数据恢复…

计算机网络 TCP/IP体系 数据链路层

一. 数据链路层的基本概念 数据链路层主要负责节点之间的通信,确保从物理层接收到的数据能够准确无误地传输到网络层。 数据链路层使用的信道主要有以下两种类型: 点对点信道: 这种信道使用一对一的点对点通信方式。广播信道: 这种信道使用一对多的广播通信方式,…

若依系统前端项目解读——从使用过程解读

登录系统 用户初次登录,浏览器中未存用户信息(token),需向后端请求并保存至浏览器中用户再次登录系统,向后端发请求会携带token在请求头中,并与后端Redis缓存的token比较,判断token是否还在有效…

uniapp在js方法中,获取当前用户的uid(uni-id-user)表中的用户id

// 1.判断当前用的权限 let uid uniCloud.getCurrentUserInfo().uid //获取当前用户的uid // 用户uid等于发布者id或者用户权限等于admin或者用户角色等于webmaster if (uid this.item.user_id[0]._id || this.uniIDHasRole…

只允许指定ip远程连接ssh

我们都会使用securtcrt或者xshell等软件进行远程登录,这样虽然会给我们带来很多便捷,但是同样会存在一定的风险。有很多人专门通过重复的扫描试图破解我们的linux服务器,从而获取免费的“肉鸡”。因此我们可以通过设置hosts.allow和hosts.den…

一个最简单的网络编程

今天总结一下,我至今学的第一个网络编程,也是一个最简单的网络编程。 这篇博客只是将如何用代码实现一个网络编程,具体细节不讲解,后续会介绍详细细节。 网络编程会涉及到客户端和服务器的实现。 1.服务器的实现 首先&#xf…

【图像与点云融合教程(五)】海康相机 ROS2 多机分布式实时通信功能包

0. 前言 Github 仓库链接:Hikvision Camera ROS2 package 0.1 问题背景 上一篇[博客](【图像与点云融合教程(四)】海康相机 ROS2 功能包 - 古月居 (guyuehome.com))介绍了我开源的海康相机 ROS2 功能包,在本地机器上可以实时订…

【scikit-learn 1.2版本后】sklearn.datasets中load_boston报错 使用 fetch_openml 函数来加载波士顿房价

ImportError: load_boston has been removed from scikit-learn since version 1.2. 由于 load_boston 已经在 scikit-learn 1.2 版本中被移除,需要使用 fetch_openml 函数来加载波士顿房价数据集。 # 导入sklearn数据集模块 from sklearn import datasets # 导入波…