FastAPI 的 quickstart

从这一章往后我们就正式开始学习 FastAPI 了

代码

FastAPI 环境安装

  1. python 环境安装
    根据要求至少需要 python 3.8及其以上,可以去 python 官网 自行下载安装,
    本文中我们用 python 3.11

  2. FastAPI 环境安装

pip install fastapi
pip install "uvicorn[standard]"

其中 pip install “uvicorn[standard]” 用于安装ASGI服务器 uvicorn库及其标准依赖项。

  1. Python IDE
    这里我们选择 PyCharm ,下载后安装即可。没有专业版秘钥的可以下载 社区版本:PyCharm Community Edition

FastAPI 例子

首先我们先直观的感受一下,FastAPI 的使用:在 quickstart python package 下面创建 demo.py:

from fastapi import FastAPI
app = FastAPI()@app.get("/")
def root():return {"message": "Hello World"}@app.get("/hello/{name}")
def say_hello(name: str):return {"message": f"Hello {name}"}  

其中 @app.get(xx) 为**路径操作装饰器,用来做映射用的
def xxx
路径操作函数,**具体的业务逻辑在这里实现
在 PyCharm 终端执行执行

uvicorn quickstart.demo:app --reload

uvicorn quickstart.demo:app 命令含义如下:

  • quickstart.demoquickstart.demo.py 文件(一个 Python「模块」)。
  • app:在 quickstart.demo.py 文件中通过 app = FastAPI() 创建的对象。
  • --reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。
    然后就可以在浏览器中分别访问
  1. http://127.0.0.1:8000/ 返回
{"message":"Hello World"}
  1. http://127.0.0.1:8000/hello/xiaomin
{"message":"Hello xiaoming"}

至此 FastAPI 的例子就大功告成了,唯一不好的地方就是每次都需要通过命令行来操作,能否想普通的 python 程序一样,直接在 PyCharm 运行呢?
答案是可以的,直接添加 main 方法即可,如下:

from fastapi import FastAPI
app = FastAPI()@app.get("/")
def root():return {"message": "Hello World"}@app.get("/hello/{name}")
def say_hello(name: str):return {"message": f"Hello {name}"}  if __name__ == "__main__":import uvicornuvicorn.run("quickstart.demo:app",reload=True,port=8001)

此处我们通过 port 改变其默认端口 8000 为 8001,旨在告诉大家有这样的一个功能

总结

如何从零构件一个 FastAPI 程序

  • 导入 FastAPI

  • 创建一个 app 实例。

  • 编写一个路径操作装饰器(如 @app.get("/"))。

  • 编写一个路径操作函数(如上面的 def root(): ...)。

  • 运行开发服务器(如 uvicorn main:app --reload)。

文档

作为一个后端或者 API 开发者,文档书写是一样特别麻烦的事情,特别是 API 修改需要及时修改文档。现在 FastAPI 内置了对文档的支持,后续写完代码就可以把文档的链接,直接丢给他人,省去了很多不必要的麻烦。

直接访问:http://127.0.0.1:8001/docs

![](https://img-blog.csdnimg.cn/direct/820681bc94454559860816138e37976c.png
同时可以直接通过 try it out 按钮直接请求响应的 API

还可以访问:http://127.0.0.1:8001/redoc,得到漂亮的 API 文档界面

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

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

相关文章

基于springboot+vue的高校办公室行政事务管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?

“2024年是原生鸿蒙的关键一年,我们要加快推进各类鸿蒙原生应用的开发,集中打赢技术底座和三方生态两大最艰巨的战斗。”这是余承东在新年信中表达的决心。 随后在1月18日举行的鸿蒙生态千帆启航仪式上,华为宣布 HarmonyOS NEXT 鸿蒙星河版系…

Linux内存地址空间

目录 一、虚拟地址空间 1.虚拟地址空间的定义 2.虚拟地址空间的布局 二、内存壁垒 1.内存壁垒的定义​编辑 2.段错误 三、内存映射的建立与解除 (1)mmap (2)munmap (3)堆内存的分配和释放 1.sbrk …

springboot238光影视频

光影视频平台 摘 要 使用旧方法对光影视频平台的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在光影视频平台的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开…

如何用ChatGPT+GEE+ENVI+Python进行高光谱,多光谱成像遥感数据处理?

原文链接:如何用ChatGPTGEEENVIPython进行高光谱,多光谱成像遥感数据处理? 第一:遥感科学 从摄影侦察到卫星图像 遥感的基本原理 遥感的典型应用 第二:ChatGPT ChatGPT可以做什么? ChatGPT演示使用 …

美梦从舒适开始,康姿百德床垫为睡眠健康护航

在当今社会,高质量的睡眠已成为人们对生活品质的追求,对床垫的选择也变得越来越讲究。在我们繁忙的生活中,一张优质的床垫不仅是我们舒适休息的保障,更是保持健康生活方式的重要部分。康姿百德床垫,作为市场上的佼佼者…

BEVFusion

1. 简介 融合激光雷达和相机的信息已经变成了3D目标检测的一个标准,当前的方法依赖于激光雷达传感器的点云作为查询,以利用图像空间的特征。然而,人们发现,这种基本假设使得当前的融合框架无法在发生 LiDAR 故障时做出任何预测&a…

手写 Attention 迷你LLaMa2——LLM实战

https://github.com/Yuezhengrong/Implement-Attention-TinyLLaMa-from-scratch 1. Attention 1.1 Attention 灵魂10问 你怎么理解Attention? Scaled Dot-Product Attention中的Scaled: 1 d k \frac{1}{\sqrt{d_k}} dk​ ​1​ 的目的是调节内积&…

前端的文字的字体应该如何设置

要设置文字的字体,在CSS中使用font-family属性。这个属性可以接受一个或多个字体名称作为其值,浏览器会按照列表中的顺序尝试使用这些字体渲染文本。如果第一个字体不可用,浏览器会尝试使用列表中的下一个字体,依此类推。 字体设…

国内哪个工具可以平替chatgpt?国内有哪些比较好用的大模型gpt?

我自己试用了很多的平台,发现三个比较好的大模型平台,对普通用户也比较的友好的,而且返回内容相对来说,正确率更高的,并且相关场景插件比较丰富的国内厂商。 本文说的,是我自己觉得的,比较有主观…

准备车载测试面试的小伙伴,赶紧看起来!

随着现代汽车的电子化程度越来越高,汽车总线系统也变得越来越复杂。汽车总线测试是一项重要的任务,它有助于确定车辆电子系统中的问题,并保障车辆的安全和可靠性。 CAN总线…… 控制器区域网(Controller Area Network&#xff0c…

体感游戏开发的最大挑战是什么?

体感游戏开发的最大难度之一是需要克服的技术挑战,包括硬件和软件方面的复杂性。此类游戏需要利用传感器、摄像头、运动检测设备等技术,让玩家的实际身体动作能够准确地被游戏系统捕获和识别。以下是体感游戏开发可能面临的一些主要挑战: 1.实…