Python入门第6篇(FastApi、uvicorn)

前言

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.hqwc.cn/news/267939.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系列十、SpringBoot + MyBatis + Redis实现分布式缓存(基于注解方式)

一、概述 上篇文章 系列九、SpringBoot MyBatis Redis实现分布式缓存 介绍了基于xml方式实现分布式缓存的效果,当前大家使用的技术栈基本是springboot各种框架的组合,而springboot显著的一个特点就是去xml配置,那么在无xml配置的情形下&…

mysql:建议使用INT UNSIGNED类型存储IPv4地址

建议使用INT UNSIGNED类型存储IPv4地址,而不要使用INT类型,也不建议使用VARCHAR(15)类型存储。 在mysql中,内嵌函数INET_ATON(expr)可以将IP地址字符串转换为整数,内嵌函数INET_NTOA(expr)可以将整数转换为ip地址字符串。 例如&a…

使用Kali Linux端口扫描

端口扫描 【实训目的】 掌握端口扫描的基本概念和端口扫描的原理,掌握各种类型端口扫描的方法及其区别。 【场景描述】 在虚拟机环境下配置4个虚拟系统“Win XP1” “Win XP2” “Kali Linux”和“Metasploitable2”,使得4个系统之间能够相互通信。实…

.net6 打包成exe文件启动后,只能localhost访问,无法使用ip访问

背景: 公司其他部门采用了.net6开发了一个小服务,需要我这边部署到winserver上,由于之前没有了解过.net6,就直接进行部署了,发现点击exe直接启动了,也没报错,在服务器上也可以通过localhost进行访问&#…

六级翻译之印章

好像大房子挺难得 三段式 1Since ancient from now,seals have been a symbol of power and certerfiction of identity.seals not only practical but also is a form of art.Seal is an ancient art combining with manafutuer of crafting and desgin of…

arkts编译报错-arkts-limited-stdlib错误【Bug已完美解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:适配指导案例此Bug解决方案总结项目场景: arkts编译报错-arkts-limited-stdlib错误。 我用Deveco studio4.0 beta2开发应用,报arkts-limited-stdlib错误 报错内容为: ERROR: ArKTS:ERROR File: D:/prRevivw/3792lapplica…

胡桃工具箱 原神多功能工具箱

胡桃工具箱 原神胡桃工具箱是一款非常实用的游戏工具辅助软件,可以为用户们提供优质的原神游戏工具,体验更精彩的游戏辅助,提供帧率解锁游戏功能,包括数据查询、游戏详解以及各种实用的功能。 安装使用 1.获取胡桃工具箱 请点击…

EasyExcel处理表头的缓存设置

在学习EasyExcel 时会发现针对使用类模型配置表头相关属性时,EasyExcel 会使用到缓存技术以提升表头的解析速度如下代码: 这些参数再何时设置的哪? 在easyExcel 基础参数设置中会有这个参数filedCacheLocation 。默认采用的使用线程级别的…

华为或荣耀手机禁止强制升级鸿蒙系统的终极方法

需要有数据传输的usb线.打开usb调试模式. 进这个链接下载华为ADB一键卸载VS重装软件 按里面的视频说明,输入88 然后回车即可 https://download.csdn.net/download/viqecel/12161462

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

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

HyperGCN代码复现

环境:python3.6.7,torch0.4,外加pyyaml。 问题1:TypeError: cant convert np.ndarray of type numpy.intc. The only supported types are: double, float, float16, int64, int32, and uint8. 解决办法: 复现结果: …

weblogic部署应用包(从开发到部署)

想了解下weblogic部署流程,由于电脑没有应用程序,所以自己搞个test.war应用程序测试 软件 1-软件:jdk版本 2-path变量值增加:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPow…