fastApi基础
1、fastApi简介

官方文档:https://fastapi.tiangolo.com/
源码: https://github.com/tiangolo/fastapi

2、环境准备
安装python
安装pycharm
安装fastAPI
安装 uvicorn

查看已经安装的第三方库:pip list
查看pip 配置信息:pip config list
3、使用虚拟环境


3.1方式一 venv
首先为虚拟环境创建一个文件夹,用于存放虚拟环境,命令窗口切换的虚拟环境存放的路径下执行以下命令
python -m venv myenv




结束虚拟环境:deactivate

3.2使用virtualenvwrapper-win

安装:pip install virtualenvwrapper-win
创建虚拟环境:mkvirtualenv myenv2

3.3多版本共存

电脑上同时安装多个版本
在安装第二个版本的时候,没有自动设置环境变量。
将第二个版本的安装路径添加到环境变量中

在相应版本根路径下的python.exe拷贝一个副本,并根据版本号重新命名python3.exe。这样在cmd中直接使用python3就可以调用python3.10版本了

4、pycharm环境使用问题



pycharm中自带的终端存在问题



除pycharm23版本外,针对虚拟环境提出一下建议。
- 不推荐使用pycharm提供的虚拟环境
- 如果使用虚拟环境,可以手动新建虚拟环境——手动新建环境后,在pycharm终端中进入虚拟环境并激活,既可以使用虚拟环境
- 学习过程中使用全局解释器
因为我使用pycharm23版本,因此我使用pycharm虚拟环境。在虚拟环境中首先安装以下两个包
pip install fastApi
pip install uvicorn
5、第一个fastAPI

from fastapi import FastAPI# 创建一个对象
app = FastAPI()# 在函数上添加一个装饰器,app就是上面创建的对象
# 其中参数是指明路径
@app.get("/") # 路径(函数)装饰器
def hello(): # 路径函数或接口函数return {"hello":"world698654"} #接口返回值



在浏览器中安装json View插件,序列化Json数据

启动方式二


6、路径参数

- 静态路径参数
from fastapi import FastAPIapp = FastAPI()@app.get("/")
def home():return {"home":"首页"}@app.get("/apple")
def apple():return {"name":"apple","price":9.9}@app.get("/huawei")
def huawei():return {"name":"huawei", "price":9.9}
- 动态参数校验

from fastapi import FastAPIapp = FastAPI()@app.get("/")
def home():return {"home":"首页"}@app.get("/apple")
def apple():return {"name":"apple","price":9.9}@app.get("/huawei")
def huawei():return {"name":"huawei", "price":9.9}# 动态路由的解决方式
@app.get("/books/{book_id}")
def books(book_id):print(type(book_id)) # 默认情况下参数类型为字符串类型return {"id":book_id, "title":f"图书{book_id}"}@app.get("/foods/{food_id}")
def foods(food_id: int):# 因为函数中指定了参数类型为int ,所以fastAPI自动将其转换为int# 同时进行参数类型校验print(type(food_id))return {"id":food_id, "title":f"图书{food_id}"}
7、接口顺序问题


from fastapi import FastAPIapp = FastAPI()@app.get("/")
def home():return {"home":"首页"}@app.get("/books/most_popular")
def most_popular( ):# 因为函数中指定了参数类型为int ,所以fastAPI自动将其转换为int# 同时进行参数类型校验return {"data":"这是本站最畅销的图书"}# 动态路由的解决方式
@app.get("/books/{book_id}")
def books(book_id):print(type(book_id)) # 默认情况下参数类型为字符串类型return {"id":book_id, "title":f"图书{book_id}"}
8、查询参数



from fastapi import FastAPIapp = FastAPI()@app.get("/")
def home():return {"home":"首页"}
BOOKS = [{"id":1, "titile":"图书1"},{"id":2, "titile":"图书2"},{"id":3, "titile":"图书3"},{"id":4, "titile":"图书4"},{"id":5, "titile":"图书5"},{"id":6, "titile":"图书6"},{"id":7, "titile":"图书7"},{"id":8, "titile":"图书8"},{"id":9, "titile":"图书9"},{"id":10, "titile":"图书10"},]@app.get("/books")
# 函数中的参数与前端请求的参数必须一直
def books(page:int,size:int):# 假设page=1,size=3,则BOOKS[0:3],从索引0开始取3个数return BOOKS[(page-1)*size:page*size]# @app.get("/books")
# # 函数中的参数与前端请求的参数必须一直
# def books(page,size):
# print(type(page),print(size)) # 前端传递过来默认类型为size
# return BOOKS
openAPI


在Swagger模式下可以与后台进行交互


HTTP协议

相关文章:
fastApi基础
1、fastApi简介 官方文档:https://fastapi.tiangolo.com/ 源码: https://github.com/tiangolo/fastapi 2、环境准备 安装python 安装pycharm 安装fastAPI 安装 uvicorn 查看已经安装的第三方库:pip list 查看pip 配置信息:pip co…...
Mysql整理二 - 常见查询语句面试题(附原表)
表结构,创建原表的代码在最后 -- cid课程id; tid老师id; sid学生id; select * from t_mysql_course; select * from t_mysql_score; select * from t_mysql_student; select * from t_mysql_teacher; 1. 查询" 01 “课程比” 02 "课程成绩高的学生的信息…...
Python - 读取pdf、word、excel、ppt、csv、txt文件提取所有文本
前言 本文对使用python读取pdf、word、excel、ppt、csv、txt等常用文件,并提取所有文本的方法进行分享和使用总结。 可以读取不同文件的库和方法当然不止下面分享的这些,本文的代码主要目标都是:方便提取文件中所有文本的实现方式。 这些库的…...
Codeforces Round 892 (Div. 2) C. Another Permutation Problem 纯数学方法 思维题
Codeforces Round 892 (Div. 2) C. Another Permutation Problem 源码: #include <iostream> #include <algorithm> #include <set> #include <map> #include <queue> #include <vector> #include <stack> #include &l…...
持续输出:自媒体持续输出文字内容、视音频创作(视频课程、书籍章节)
以下是自媒体持续输出文字内容、视音频创作的最佳方法: 灵感来源:寻找灵感来源是自媒体创作的重要一环。可以从日常生活、网络热点、行业动态等方面寻找创作灵感。 确定主题:在确定主题的时候,需要根据读者和观众的需求ÿ…...
篇十七:备忘录模式:恢复对象状态
篇十七:"备忘录模式:恢复对象状态" 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 另外有2本不错的关于设计模式的资料&…...
初识mysql数据库之图形化界面
目录 一、好用的数据库图形化界面软件 1. Navicat 2. SQLyog 3. MYSQL Workbench 二、MYSQL Workbench基本使用 1. 安装 2. 远端连接 3. 执行sql语句 一、好用的数据库图形化界面软件 在以前的文章中,一共介绍了两种使用数据库的方式,分别为在l…...
APP外包开发的H5开发框架
跨平台移动应用开发框架允许开发者使用一套代码在多个操作系统上构建应用程序,从而节省时间和资源。以下是一些常见的跨平台移动应用开发框架以及它们的特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司࿰…...
高性能跨平台网络通信框架 HP-Socket v5.9.3
项目主页 : http://www.oschina.net/p/hp-socket开发文档 : https://www.docin.com/p-4478351216.html下载地址 : https://github.com/ldcsaa/HP-SocketQQ Group: 44636872, 663903943 v5.9.3 更新 一、主要更新 问题修复:通过 POST/PUT 等带有请求内容的 HTTP 方…...
Vue3.2+TS在v-for的时候,循环处理时间,将其变成xx-xx-xx xx:xx:xx格式,最后教给大家自己封装一个时间hooks,直接复用
Vue3.2TS在v-for的时候,循环处理时间,将其变成xx-xx-xx xx:xx:xx格式 最后教给大家自己封装一个时间hooks,直接复用 1.没有封装,直接使用 <template><div><ul><li v-for"item,index in arr" :k…...
05 mysql innodb page
前言 最近看到了 何登成 大佬的 "深入MySQL源码 -- Step By Step" 的 pdf 呵呵 似乎是找到了一些 方向 之前对于 mysql 方面的东西, 更多的仅仅是简单的使用[业务中的各种增删改查], 以及一些面试题的背诵 这里会参照 MySQL Internals Manual 来大致的看一下 i…...
记录一次electron打包提示文件找不到的解决方法
没有配置files选项 files的作用是配置打包到应用程序的构建资源 就是说如果你想使用项目那个目录下的文件 就得通过files配置一下不然就会报错 json文件或者yml文件会报的错 格式是这样的 "files": ["dist-electron", "dist"],electron打包配…...
《大型网站技术架构》第二篇 架构-高可用
高可用在公司中的重要性 对公司而言,可用性关系网站的生死存亡。对个人而言,可用性关系到自己的绩效升迁。 工程师对架构做了许多优化、对代码做了很多重构,对性能、扩展性、伸缩性做了很多改善,但别人未必能直观地感受到&#…...
VS Code 使用cnpm下载包失败
一、 问题如下: 网上找到的解决方法是要在powershell中执行: Set-ExecutionPolicy RemoteSigned进行更改策略。 首先我们解释下这个Set-ExecutionPolicy RemoteSigned,Set-ExecutionPolicy 是一个 PowerShell 命令,用于控制脚本…...
【图像分类】CNN + Transformer 结合系列.4
介绍两篇利用Transformer做图像分类的论文:CoAtNet(NeurIPS2021),ConvMixer(ICLR2022)。CoAtNet结合CNN和Transformer的优点进行改进,ConvMixer则patch的角度来说明划分patch有助于分类。 CoAtN…...
分享一下利用Vue表单处理实现复杂表单布局
在开发Web应用程序中,表单是非常常见的一种元素。而在某些情况下,我们需要实现一些更为复杂的表单布局,以满足业务需求。使用Vue.js作为前端框架,我们可以很方便地处理复杂表单布局,并且实现数据的双向绑定。 下面来将…...
SAP Fiori 问题收集
事务代码篇 启动工作台:/N/UI2/FLP 错误日志: /n/IWFND/ERROR_LOG 服务清单: /n/IWFND/MAINT_SERVICE 创建语义对象:/N/UI2/SEMOBJ 创建目录:/N/UI2/FLPD_CONF(cross-client)或 /N/UI2…...
econml双机器学习实现连续干预和预测
连续干预 在这个示例中,我们使用LinearDML模型,使用随机森林回归模型来估计因果效应。我们首先模拟数据,然后模型,并使用方法来effect创建不同干预值下的效应(Conditional Average Treatment Effect,CATE&…...
《甲午》观后感——GPT-3.5所写
《甲午》是一部令人深思的纪录片,通过生动的画面和真实的故事,向观众展示了中国历史上的一段重要时期。观看这部纪录片,我深受触动,对历史的认识也得到了深化。 首先,这部纪录片通过精心搜集的历史资料和珍贵的影像资料…...
Java技术整理(6)—— 微服务篇
1、服务注册发现 服务注册就是维护一个服务列表,它在管理系统内所有的服务地址,当新的服务启动后,它会向服务列表提交自己的服务地址,服务的调用法可以直接向服务列表发送服务列表获取请求,就能获得所有的服务地址&am…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...
