fastApi基础

news2025/1/9 15:00:00

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 FastAPI

app = 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 FastAPI

app = 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 FastAPI

app = 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 FastAPI

app = 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协议

在这里插入图片描述

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

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

相关文章

大数据扫盲(1): 数据仓库与ETL的关系及ETL工具推荐

在数字化时代,数据成为了企业决策的关键支持。然而,随着数据不断增长,有效地管理和利用这些数据变得至关重要。数据仓库和ETL工具作为数据管理和分析的核心,将帮助企业从庞杂的数据中提取有价值信息。 一、ETL是什么? …

运维监控学习1

1、监控对象: 1、监控对象的理解;CPU是怎么工作的; 2、监控对象的指标:CPU使用率;上下文切换; 3、确定性能基准线:CPU负载多少才算高; 2、监控范围: 1、硬件监控&#x…

2023年淘宝京东直播方向,MCN机构申请入驻详细指南!

对于专注于孵化内容的直播主持人和在观望淘宝平台内容MCN的人来说,这是一个重大利好。尽管今后可能调整保证金标准,但目前看来,淘宝仍然有意引进和扶持更多的内容MCN机构。 随着《内容MCN机构管理规范》的推出,内容MCN机构、内容…

【Matlab智能算法】Elman神经网络-遗传算法(Elman-GA)函数极值寻优——非线性函数求极值

往期博客👉 【Matlab】BP神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值 【Matlab】GRNN神经网络遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值 【Matlab】RBF神经网络遗传算法(RBF-GA)函数极值寻优——非线性函数求极值 本篇博客将主要介绍Elman神…

【C++深入浅出】初识C++上篇(关键字,命名空间,输入输出,缺省参数,函数重载)

目录 一. 前言 二. 什么是C 三. C关键字初探 四. 命名空间 4.1 为什么要引入命名空间 4.2 命名空间的定义 4.3 命名空间使用 五. C的输入输出 六. 缺省参数 6.1 缺省参数的概念 6.2 缺省参数的分类 七. 函数重载 7.1 函数重载的概念 7.2 函数重载的条件 7.3 C支…

【雕爷学编程】Arduino动手做(24)---水位传感器模块2

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

阿里云服务器安装WordPress网站教程基于CentOS系统

阿里云百科分享使用阿里云服务器安装WordPress博客网站教程,WordPress是使用PHP语言开发的博客平台,在支持PHP和MySQL数据库的服务器上,您可以用WordPress架设自己的网站,也可以用作内容管理系统(CMS)。本教…

数据结构-带头双向循环链表的实现

前言 带头双向循环链表是一种重要的数据结构,它的结构是很完美的,它弥补了单链表的许多不足,让我们一起来了解一下它是如何实现的吧! 1.节点的结构 它的节点中存储着数据和两个指针,一个指针_prev用来记录前一个节点…

C语言学习之大端小端的数据存储

小端的数据存储&#xff1a;数据低位存在地址低位&#xff0c;数据高位存在地址高位&#xff1b;大端的数据存储&#xff1a;数据低位存在地址高位&#xff0c;数据高位存在地址低位&#xff1b;图例显示&#xff1a; 验证PC是大端还是小端的代码&#xff1a; #include <st…

安全学习DAY145_主机服务器端口扫描蜜罐、WAF识别

信息打点-主机架构&蜜罐识别&WAF识别&端口扫描 文章目录 信息打点-主机架构&蜜罐识别&WAF识别&端口扫描概述-思维导图本节知识点&#xff1a;识别应用服务器&其他服务协议&#xff1a;端口扫描NmapMasscan意外环境&#xff1a; 识别WAF防火墙WAF解…

宝塔Linux面板升级“获取更新包失败”怎么解决?

宝塔Linux面板执行升级命令后失败&#xff0c;提示“获取更新包失败&#xff0c;请稍后更新或联系宝塔运维”如何解决&#xff1f;新手站长分享宝塔面板升级失败的解决方法&#xff1a; 宝塔面板升级失败解决方法 1、使用root账户登录到你的云服务器上&#xff0c;宝塔Linux面…

lab1 utilities

测试和运行 参考大佬 修改grade-lab-util文件中的python为python3xv6.out这个文件的所有者可能是root&#xff0c;需要修改为用户&#xff0c;sudo chown woaixiaoxiao xv6.out 每完成一个函数&#xff0c;执行下面的步骤在Makefile中加入新增的程序$U/_sleep\make qemu&…

git 使用远端代码强制覆盖本地

有时候会遇到这种情景&#xff0c;我们本地的代码不需要了&#xff0c;需要使用远端的代码强制覆盖&#xff0c;这时候可以使用下面的命令 git fetch --all然后再执行下面的命令&#xff0c;重置为远端的代码&#xff0c;即使用远端的代码将本地覆盖 origin/远端分之名 git re…

Map中compute、putIfAbsent、computeIfAbsent、merge、computeIfPresent使用

目录 putIfAbsent computeIfAbsent computeIfPresent compute merge putIfAbsent 解释&#xff1a;【不存在则添加】&#xff0c;如果map中没有该key&#xff0c;则直接添加&#xff1b;如果map中已经存在该key&#xff0c;则value保持不变 default V putIfAbsent(K key,…

Metasploitable2靶机漏洞复现

一、信息收集 nmap扫描靶机信息 二、弱口令 1.系统弱口令 在Kali Linux中使用telnet远程连接靶机 输入账号密码msfadmin即可登录 2.MySQL弱口令 使用mysql -h 靶机IP地址即可连接 3.PostgreSQL弱密码登录 输入psql -h 192.168.110.134 -U postgres 密码为postgres 输入\…

Python中的lambda函数

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! Python中的lambda函数 在Python中&#xff0c;我们使用lambda关键字来声明一个匿名函数&#xff0c; 这就是为什么我们将它们称为“lambda函数”。 匿名函数是指没有声明函数名称的函数。 尽管它们在语法上看起来不同&a…

【MySQL】并发执行事务可能存在的问题, 事物的四种隔离级别

文章目录 前言一、并发执行事务可能存在的问题1, 脏读问题2, 不可重复读3, 幻读 二、MySQL 的四种隔离级别1, READ UNCOMMITTED 读未提交2, READ COMMITTED 读已提交3, REPEATABLE READ 可重复读 (MySQL 的默认事务隔离级别)4, SERIALIZABLE 串行化 总结 前言 各位读者好, 我是…

百度智能云“千帆大模型平台”升级,大模型最多,Prompt模板最全

1、前言 从ChatGPT正式推出之后&#xff0c;大模型开始逐渐火爆起来&#xff0c;基于大模型的潜力与广泛应用前景&#xff0c;多个厂商也开始在大模型领域进行深耕布局。越来越多的人也开始尝试使用大模型来解决日常工作或生活中的问题&#xff0c;有效地提高了处理问题的效率。…

探讨uniapp的生命周期问题

在uniapp中,生命周期函数分为应用生命周期函数、页面生命周期函数和组件生命周期函数. 1应用声明周期 应用生命周期函数只能在 App.vue 中监听有效&#xff0c;在其他页监听无效。 onLaunch&#xff1a;当uni-app 初始化完成时触发&#xff08;全局只触发一次&#xff09;on…

【变形金刚03】使用 Pytorch 开始构建transformer

一、说明 在本教程中&#xff0c;我们将使用 PyTorch 从头开始构建一个基本的转换器模型。Vaswani等人在论文“注意力是你所需要的一切”中引入的Transformer模型是一种深度学习架构&#xff0c;专为序列到序列任务而设计&#xff0c;例如机器翻译和文本摘要。它基于自我注意机…