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…...
體驗 Python 自動化的力量:從網頁抓取開始
在學習如何使用 Python 自動化程序來獲取相關網頁內容的過程中,我深刻體會到了自動化的力量。透過使用像是 requests 和 BeautifulSoup 這樣的庫,我能夠輕鬆地從網頁中提取所需的信息,這不僅提高了我的工作效率,也讓我對網頁結構有…...
告别轮询!用Java-WebSocket库在Android上5分钟搞定WebSocket实时通信
告别轮询!用Java-WebSocket库在Android上5分钟搞定WebSocket实时通信 在移动应用开发中,实时数据同步一直是个棘手的问题。想象一下这样的场景:用户A发送了一条消息,用户B需要等待几秒甚至更久才能收到;股票行情数据延…...
sqldef性能优化技巧:大规模数据库模式迁移实战经验
sqldef性能优化技巧:大规模数据库模式迁移实战经验 【免费下载链接】sqldef Idempotent schema management for MySQL, PostgreSQL, SQLite, and SQL Server 项目地址: https://gitcode.com/gh_mirrors/sq/sqldef 在现代应用开发中,数据库模式迁移…...
BGE-Large-Zh效果展示:天气预报查询与气象文档匹配的语义精准度验证
BGE-Large-Zh效果展示:天气预报查询与气象文档匹配的语义精准度验证 1. 工具简介 BGE-Large-Zh是一款专为中文语义理解设计的本地化向量化工具,基于先进的BAAI/bge-large-zh-v1.5模型开发。这个工具能够将中文文本转换为高维语义向量,并通过…...
中小企业降本妙招:Hunyuan免费翻译模型部署实战
中小企业降本妙招:Hunyuan免费翻译模型部署实战 1. 为什么中小企业需要关注翻译成本? 对于中小企业来说,国际化业务拓展往往面临一个现实问题:翻译成本。传统的商业翻译API虽然方便,但按字数或调用次数计费的模式&am…...
Alpamayo-R1-10B开源镜像教程:模型权重分片加载与显存峰值降低30%实测方案
Alpamayo-R1-10B开源镜像教程:模型权重分片加载与显存峰值降低30%实测方案 1. 项目背景与挑战 Alpamayo-R1-10B是专为自动驾驶研发设计的视觉-语言-动作(VLA)大模型,其核心能力在于通过多模态输入实现类人因果推理。这个100亿参数的模型在实际部署时面…...
安立Anritsu MS9740B台式光谱分析仪概述
安立Anritsu MS9740B台式光谱分析仪概述安立MS9740B是一款高性能台式光谱分析仪,广泛应用于光通信、激光器测试、光纤传感等领域。其设计兼顾高精度与操作便捷性,支持波长范围覆盖600至1750 nm,分辨率带宽可达0.05 nm。主要技术参数波长范围&…...
Open UI5 源代码解析之1104:MenuItem.js
源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.ui.commons\src\sap\ui\commons\MenuItem.js MenuItem.js 文件深度分析 文件的直观定位 MenuItem.js 是一个体量非常小的文件,但它在 openui5 这样的大型项目里并不轻。原因在于,它不是靠大段业务逻辑…...
C语言分支循环语句:第二篇:循环语句
一、什么是循环循环就是让一段代码重复执行多次,不用写很多遍相同代码。C 语言有三种循环:• for 循环• while 循环• do…while 循环 二、while 循环先判断,再执行。 while (条件) {// 循环体 } 实战:猜数字 5 次机会 while (co…...
Python yield关键字原理_生成器执行机制
yield 将函数变为生成器工厂,调用返回生成器对象而非执行函数体;首次 next() 启动执行,遇 yield 暂停并保存状态,后续 next() 从中断处继续,直至 StopIteration。yield 不是简单地“暂停函数”,而是让函数变…...
