Python入门第6篇(FastApi、uvicorn)

news2024/11/24 20:46:10

前言

FastApi用来开发webapi,可以定义路由、定义get、post方法等

但是要让浏览器可以访问webapi,还需要用到uvicorn,即web服务器,类似Tomcat、iis这种的

pip安装相关包

FastApi

uvicorn

注意:可能一次安装不成功,可以多尝试几次,再一个不要把包名称写错,那样也是不行的

webapi开发

get方法

新建main.py文件(这个后面在通过uvicorn访问webapi的时候会用到)

先来一个简单的get请求

from fastapi import Body, FastAPI, Query
from pydantic import BaseModel


# 创建api实例
# 注意这里app命名,在uvicorn启动webapi的时候用到
app = FastAPI()

# get方法,路由是根目录
@app.get("/")
async def root():
    return {"message":"hello world"}

文件夹路径定位到mian.py文件的当前目录,运行cmd,输入:uvicorn main:app --reload

注意:这里main即main.py文件名,app是main.py文件里定义的webapi应用名

输入命令回车,这个时候命令行输出几行信息,即代表应用成功启动

可以看到应用运行的地址是:http://127.0.0.1:8000

浏览器输入地址,访问,可以发现输出了我们代码中写的json串

webapi在线文档

浏览器访问:http://127.0.0.1:8000/docs,即可查看webapi交互文档(直接进行接口调用)
访问:http://127.0.0.1:8000/redoc,即可查看webapi文档

post方法
 

# 继承了BaseModel,定义了ChatInfo的数据格式
class ChatInfo(BaseModel):  
    uset: str = "u1"  
    question: str   
    no: int = 0  

# 继承了BaseModel,定义了OtherInfo的数据格式
class OtherInfo(BaseModel):  
    info: str 

# post方法,路由/chat
@app.post("/chat")
async def chat(chatInfo:ChatInfo=Body(description="聊天信息"),
               otherInfo:OtherInfo=Body(description="其他信息"),
               cid:str=Query(description="聊天信息id")):
    # 参数说明:
    # chatinfo、otherInfo是body数据
    # cid是url参数
    # 接口返回相关参数
    return {"param":cid,"chat":chatInfo,"other":otherInfo}

 如上代码,定义了ChatInfo、OtherInfo类,用于承接两个body参数,cid是url参数,其中description可以设置参数描述,这个信息用于在webapi文档中显示

接口返回相关参数信息

接下来进行接口调用:

返回值:

注意:实际中调用webapi可能还需要设置header,主要包括token、cookie等信息,主要用于设置用户登录信息等

FastApi开发参考链接:

fastapi入门三post请求_前端_舌尖上的蛋炒饭-华为云开发者联盟 (csdn.net)icon-default.png?t=N7T8https://huaweicloud.csdn.net/63a560f7b878a54545945834.html?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-1-121771195-blog-129127450.235%5Ev39%5Epc_relevant_anti_t3_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-1-121771195-blog-129127450.235%5Ev39%5Epc_relevant_anti_t3_base&utm_relevant_index=2

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

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

相关文章

二叉树--基础OJ

1.对称二叉树 题目链接:101. 对称二叉树 - 力扣(LeetCode) 题解: 我们可以用递归的方法去做: 如果两个树互为镜像(1.根节点的值相同,2.左子树的值与右子树的值对称)则为对称二叉树&a…

win中查看MD5、Linux中查看MD5

win中的MD5计算 1、用GitBash Git Bash Here md5sum.exe 我记得-孙燕姿.mp32、win自带命令 certutil -hashfile 我记得-孙燕姿.mp3 MD5Linux中MD5计算 md5sum 我记得-孙燕姿.mp3

使用paddleocr识别图片文本的一种方案

pdf文本分为两种,一种是标准的pdf格式的文本,这种无需利用ocr识别,另外一种就是图片文本,这种需要进行ocr的识别。 OCR 识别文本和文本区域 ppstructure是paddleocr里面的一个子库,可以识别文档的页眉页脚、正文、标…

多线程 - 学习笔记

前置知识 什么是线程和进程? 进程: 是程序的一次执行,一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。 线程: 进程中的一个执行流&#xff0…

我的软考拿证之路

我的软考拿证之路 前言2021年上半年2022年下半年2023年上半年2023年下半年 前言 在2020年8月份,准备参加软考高级项目管理师考试,经历了疫情三年,停考3次,经历了教材更新,经历了考试形式由纸考换机考,共参…

实现TensorBoard可视化网络的参数

前言 最近在做神经网络相关的实验,为了方便神经网络参数是否变化,学习一下TensorBoard可视化网络的参数的方法,这里使用pytorch实现。 实现 当使用PyTorch训练一个简单的神经网络时,可以使用TensorBoardX来可视化网络的参数。以…

机器学习---KNN最近邻算法

1、KNN最近邻算法 K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一,有监督算法。该方法的思路是:如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个…

小米耳机定制音效选项灰色无法开启使用_开启定制音效_音效模式设置

使用环境:Redmi K50 Ultra +MIUI 14.0.11+定制音效选项是灰色的无法开启及音效模式无法选择 定制音效无法开启 音效模式无法选择(需下载小米耳机APP才能设置),根据提示解决问题即可 解决方法:关…

ICC2:low power与pg strategy(pg_mesh)

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 用pg_strategy创建power stripe,示例如下: set pd_list {{DEFAULT_VA VDD_DIG VDD_DIG VSS} {PD_DSP VDD_DIG VDD_DSP VSS} } ;#两个电源域,DEFAULT_VA和PD_DSP是对应voltage area名字,其中D…

硬件开发笔记(十六):RK3568底板电路mipi摄像头接口原理图分析、mipi摄像头详解

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/134922307 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

【神行百里】pandas查询加速之行索引篇

最近进行大数据处理的时候,发现我以前常用的pandas查询方法太慢了,太慢了,真是太慢了,查阅资料,遂发现了一种新的加速方法,能助力我飞上天,和太阳肩并肩,所以记录下来。 1. 场景说明…

章鱼网络进展月报 | 2023.11.1-11.30

章鱼网络大事摘要 1、2023年12月,Octopus 2.0 将会正式启动。 2、隐私协议 Secret Network 宣布使用 Octopus Network 构建的 NEAR-IBC 连接 NEAR 生态。 3、Louis 受邀作为嘉宾,在 NEARCON2023 的多链网络主题沙龙中发言:我们依然处于区…

Emacs之Plantuml用于复杂UML类图(Markdown用于简单类图)(一百三十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

FTP、U盘等传统数据安全摆渡方法的6个弊端

数据安全摆渡,即数据在不同的网络之间,进行安全流转。做网间隔离的初衷,就是为了保护数据安全,但是在数据摆渡时,除了安全,企业还是需要考虑其他的要素,比如可靠性、易用性、兼容性等等。而传统…

解决:TypeError: write() argument must be str, not Tag

解决:TypeError: write() argument must be str, not Tag 文章目录 解决:TypeError: write() argument must be str, not Tag背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时,报错&#xf…

Qt搭建MQTT编程环境

QT 部署官方MQTT模块 在Qt Creator中,默认是没有部署Mqtt模块的,在使用QT编程之前,先把mqtt 模块部署到开发环境当中。参考博文:Qt开发技术:mqtt介绍、QtMqtt编译和开发环境搭建_长沙红胖子-CSDN博客 下载 Qt官方在g…

HTML 块级元素与行内元素有哪些以及注意、总结

行内元素和块级元素是HTML中的两种元素类型,它们在页面中的显示方式和行为有所不同。 块级元素(Block-level Elements): 常见的块级元素有div、p、h1-h6、ul、ol、li、table、form等。 块级元素会独占一行,即使没有…

WPF仿网易云搭建笔记(4):信息流控制之消息订阅

文章目录 专栏和Gitee仓库前言消息订阅最简单的案例简单用例父组件订阅子组件回调 结果 消息订阅机制消息token是A还是B?传递消息的载体。双重token重复订阅问题 结论 专栏和Gitee仓库 WPF仿网易云 Gitee仓库 WPF仿网易云 CSDN博客专栏 前言 上一篇文章中,我们简单…

最大公因数,最小公倍数详解

前言 对于初学编程的小伙伴们肯定经常遇见此类问题,而且为之头疼,今天我来给大家分享一下,最大公因数和最小公倍数的求法。让我们开始吧! 文章目录 1,最大公因数法1法2法3 2,最小公倍数3,尾声 …

修改 vCenter Server 的 FQDN | hostname | PNID

目录 1 先决条件2. 修改 VC 7.0.3 hostname(1)备份 VCSA(2)为VCSA的新hostname创建DNS记录(3)修改 VCSA 的hostname① 进入vCenter Server VAMI② 查看当前 FQDN③ 编辑网络设置④ 选择网络适配器⑤ 修改 h…